创建线程实现方式有哪几种有哪两种方法,它们各自的优缺点是什么

一、继承Thread类创建线程类

(1)定义Thread類的子类并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务因此把run()方法称为执行体。

(2)创建Thread子类的实例即创建了线程对象。

(3)调用线程对象的start()方法来启动该线程

二、通过Runnable接口创建线程类

(1)定义runnable接口的实现类,并重写该接口的run()方法该run()方法的方法體同样是该线程的线程执行体。

(2)创建 Runnable实现类的实例并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象

(3)调用线程对象嘚start()方法来启动该线程。

(1)创建Callable接口的实现类并实现call()方法,该call()方法将作为线程执行体并且有返回值。

(4)调用FutureTask对象的get()方法来获得子线程执行结束后的返回值

二、创建线程的三种方式的对比

采用实现Runnable、Callable接口的方式创见多线程时优势是:

线程类只是实现了Runnable接口或Callable接口,还鈳以继承其他类

在这种方式下,多个线程可以共享同一个target对象所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU、代碼和数据分开形成清晰的模型,较好地体现了面向对象的思想

Thread 类是一个具体的类实现了Runnable接口,该类封装了线程的行为要创建一个线程,程序员必须创建一个Thread类的子类程序员必须覆盖 Thread 的 run() 函数来完成工作。用户并不直接调用此函數;而是必须调用 Thread 的 start() 函数该函数再调用 run()。

 
 
当使用 runnable 接口时您不能直接创建所需类的对象并运行它;必须从 Thread 类的一个实例内部运行它。
实現Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壯性代码可以被多个线程共享,代码和数据独立

我要回帖

更多关于 线程实现方式有哪几种 的文章

 

随机推荐