之前,我们讲到了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所示。
文件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实现了多线程。
图8-6 文件8-3的运行结果
网友评论