- 相關(guān)推薦
Java創(chuàng)建線程的三種方法比較及用法
編寫多線程程序是為了實現(xiàn)多任務(wù)的并發(fā)執(zhí)行,從而能夠更好地與用戶交互。一般有三種方法,Thread,Runnable,Callable.以下是為大家分享的Java創(chuàng)建線程的三種方法比較及用法,供大家參考借鑒,歡迎瀏覽!
Runnable和Callable的區(qū)別
(1)Callable規(guī)定的方法是call(),Runnable規(guī)定的方法是run().
(2)Callable的任務(wù)執(zhí)行后可返回值,而Runnable的任務(wù)是不能返回值得
(3)call方法可以拋出異常,run方法不可以
(4)運行Callable任務(wù)可以拿到一個Future對象,表示異步計算的結(jié)果。它提供了檢查計算是否完成的方法,以等待計算的完成,并檢索計算的結(jié)果。通過Future對象可以了解任務(wù)執(zhí)行情況,可取消任務(wù)的執(zhí)行,還可獲取執(zhí)行結(jié)果。
通過實現(xiàn)Runnable接口來創(chuàng)建Thread線程:
步驟1:創(chuàng)建實現(xiàn)Runnable接口的類:
Java代碼:
class SomeRunnable implements Runnable
{
public void run()
{
//do something here
}
}
步驟2:創(chuàng)建一個類對象:
Runnable oneRunnable = new SomeRunnable();
步驟3:由Runnable創(chuàng)建一個Thread對象:
Thread oneThread = new Thread(oneRunnable);
步驟4:啟動線程:
oneThread.start();
至此,一個線程就創(chuàng)建完成了。
注釋:線程的執(zhí)行流程很簡單,當(dāng)執(zhí)行代碼oneThread.start();時,就會執(zhí)行oneRunnable對象中的void run();方法,
該方法執(zhí)行完成后,線程就消亡了。
通過實現(xiàn)Callable接口來創(chuàng)建Thread線程:
與方法1類似,通過實現(xiàn)Callable接口來創(chuàng)建Thread線程:其中,Callable接口(也只有一個方法)定義如下:
Java代碼:
public interface Callable
{
V call() throws Exception;
}
步驟1:創(chuàng)建實現(xiàn)Callable接口的類SomeCallable(略);
步驟2:創(chuàng)建一個類對象:
Callable oneCallable = new SomeCallable();
步驟3:由Callable創(chuàng)建一個FutureTask對象:
FutureTask oneTask = new FutureTask(oneCallable);
注釋:FutureTask是一個包裝器,它通過接受Callable來創(chuàng)建,它同時實現(xiàn)了
Future和Runnable接口。
步驟4:由FutureTask創(chuàng)建一個Thread對象:
Thread oneThread = new Thread(oneTask);
步驟5:啟動線程:
oneThread.start();
至此,一個線程就創(chuàng)建完成了。
通過繼承Thread類來創(chuàng)建一個線程:
步驟1:定義一個繼承Thread類的子類:
Java代碼:
class SomeThead extends Thraad
{
public void run()
{
//do something here
}
}
步驟2:構(gòu)造子類的一個對象:
SomeThread oneThread = new SomeThread();
步驟3:啟動線程:
oneThread.start();
至此,一個線程就創(chuàng)建完成了。
【Java創(chuàng)建線程的三種方法比較及用法】相關(guān)文章:
Java多線程的用法介紹09-15
Java線程同步的方法05-27
java Runnable接口創(chuàng)建線程詳解10-30
Java多線程通信方法09-03
Java實現(xiàn)多線程的方法11-10