多线程的创建

               线程:每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看作程序执行的一条条线索,称为线程。操作系统中的每一个进程中都至少存在一个线程。

                多线程:是指一个进程在执行过程中可以产生多个单线程,这些单线程程序在运行时是相互独立的,它们可以并发执行

在Java中提供了两种多线程实现方式:一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码;另一种是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。

一、继承Thread类创建多线程

在Thread类中,提供了一个start()方法启动新线程,线程启动后,虚拟机会自动调用run()方法,如果子类重写了该方法便会执行子类中的方法。演示如下

package Text4;

public class text2 {
    public static void main(String[] args) {
       MyThread myThread= new MyThread();//创建线程MyThread的线程对象
        myThread.start();//开启线程
        while (true){//通过死循环语句打印输出
            System.out.println("main()方法在运行");
        }
    }
}
    class MyThread extends Thread{
        public void run(){
            while (true){//通过死循环语句打印输出
                System.out.println("MyThread类的run()方法在运行");
            }
    }
}
代码运行效果

        单线程的程序在运行时,会按照代码的调用顺序执行,而在多线程中,main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程和多线程的区别。

二、实现Runnable接口创建多线程

        通过继承Thread类实现了多线程存在一定的局限性。因为Java只支持单继承,一个类一旦继承了某个父类就无法再继承Thread类。

        为了克服这一缺陷,Thread类提供了另外一个构造方法Thread(Runnable target),Runnable是一个接口,它只有一个run()方法。当通过这一方法创建线程对象时,只需为该方法传递一个实现了Runnable 接口的实例对象,这样就不需要调用Thread类中的run()方法了。下面用代码进行演示如何创建

package Text4;

public class text2 {
    public static void main(String[] args) {
       MyThread myThread= new MyThread();//创建线程MyThread的实例对象
        Thread thread=new Thread(myThread);  //创建线程对象
       thread.start();//开启线程,执行线程中的run()方法
        while (true){
            System.out.println("main()方法在运行");
        }
    }
}
    class MyThread implements Runnable{
        public void run(){           //线程的代码段,当调用start()方法时,线程从此处开始执行
            while (true){
                System.out.println("MyThread类的run()方法在运行");
            }
    }
}
代码运行效果

 通过对比两种实现的方式,可以看出实现Runnable接口相对于继承Thread类来说,具有以下优势:

1、适合多个相同程序代码的线程去处理同一个资源的情况,把线程同程序代码、数据有效分离,很好地体现了面向对象的设计思想。

2、可以避免由于Java的单继承带来的局限性。在开发中经常碰到这样一种情况,即使用一个已经继承了某一个类的子类创建线程,由于一个类不能同时有两个父类,因此不能使用继承Thread类的方式,只能采用实现Runnable接口的方式

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值