教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

实现Runnable接口创建多线程

更新时间:2022年03月18日17时17分 来源:传智教育 浏览次数:

  在之前的Java培训中,我们讲到了Thread类,通过继承Thread类实现可以实现多线程,但是这种方式有一定的局限性。因为Java只支持单继承,一个类一旦继承了某个父类就无法再继承Thread类,例如学生类Student继承了Person类,就无法通过继承Thread类创建线程。

  为了克服这种弊端,Thread类提供了另外一个构造方法Thread(Runnable target),其中Runnable是一个接口,它只有一个run()方法。当通过Thread(Runnable target)构造方法创建线程对象时,只需要为该方法传递一行代码,而不需要调用Thread类中的run()方法。

  下面通过一个案例来演示如何通过实现Runnable接口的方式来创建多线程,代码如下文件8-3所示。

  文件8-3的运行结果如图8-6所示。

public class Example03 {
    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()方法在运行") ;
        }

    }
}

  文件8-3中,第11~17行代码定义的MyThread类实现了Runnable接口,并在第12~16行代码中重写了Runnable接口中的run()方法;第4行代码中通过Thread类的构造方法将MyThread类的实例对象作为参数转入,第5行代码中使用start()方法开启MyThread线程,最后在第6~8行代码中定义了一个while死循环。从图8-6的运行结果可以看出,main()方法和run()方法中的打印语句都执行了,说明文件8-3实现了多线程。

实现Runnable接口创建多线程

  图8-6 文件8-3的运行结果

0 分享到:
和我们在线交谈!