首页 理论教育 Java多线程实现双接口

Java多线程实现双接口

时间:2023-11-16 理论教育 版权反馈
【摘要】:当通过Thread)构造方法创建线程对象时,只需为该方法传递一个实现了Runnable 接口的实例对象,这样创建的线程将调用实现了Runnable 接口的类中的run()方法作为运行代码,而不需要调用Thread 类中的run()方法。下面通过一个案例来演示如何通过实现Runnable 接口的方式来创建多线程,如文件11-3 所示。文件11-3Example03.java执行结果既然直接继承Thread 类和实现Runnable 接口都能实现多线程,那么这两种实现多线程的方式在实际应用中又有什么区别呢?

Java多线程实现双接口

在文件11-2 中通过继承Thread 类实现了线程,但是这种方式有一定的局限性。因为Java中只支持单继承,一个类一旦继承了某个父类就无法再继承Thread 类,比如学生类Student继承了Person 类,就无法通过继承Thread 类创建线程。

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

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

文件11-3 Example03.java

执行结果

既然直接继承Thread 类和实现Runnable 接口都能实现多线程,那么这两种实现多线程的方式在实际应用中又有什么区别呢?接下来通过一种应用场景来分析。

假设售票厅有四个窗口可发售某日某次列车的100 张车票。这时,100 张车票可以看作共享资源,四个售票窗口需要创建四个线程。为了更直观地显示窗口的售票情况,可以通过Thread 的currentThread()方法得到当前的线程的实例对象,然后调用getName()方法可以获取到线程的名称。(www.xing528.com)

【例11.4】通过继承Thread 类的方式来实现多线程的创建,如文件11-4 所示。

文件11-4 Example04.java

执行结果

【例11.5】实现Runnable 接口的方式来实现多线程的创建,如文件11-5 所示。

文件11-5 Example05.java

执行结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈