Java創建線程的三種方法
導語:編寫多線程程序是為了實現多任務的併發執行,從而能夠更好地與用户交互。下面是Java創建線程的三種方法,一起來學習下吧:
Runnable和Callable的區別
(1)Callable規定的方法是call(),Runnable規定的方法是run().
(2)Callable的任務執行後可返回值,而Runnable的任務是不能返回值得
(3)call方法可以拋出異常,run方法不可以
(4)運行Callable任務可以拿到一個Future對象,表示異步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。通過Future對象可以瞭解任務執行情況,可取消任務的`執行,還可獲取執行結果。
通過實現Runnable接口來創建Thread線程:
步驟1:創建實現Runnable接口的類:
Java代碼:
class SomeRunnable implements Runnable
{
public void run()
{
//do something here
}
}
步驟2:創建一個類對象:
Runnable oneRunnable = new SomeRunnable();
步驟3:由Runnable創建一個Thread對象:
Thread oneThread = new Thread(oneRunnable);
步驟4:啟動線程:
t();
至此,一個線程就創建完成了。
註釋:線程的執行流程很簡單,當執行代碼t();時,就會執行oneRunnable對象中的void run();方法,
該方法執行完成後,線程就消亡了。
通過實現Callable接口來創建Thread線程:
與方法1類似,通過實現Callable接口來創建Thread線程:其中,Callable接口(也只有一個方法)定義如下:
Java代碼:
public interface Callable
{
V call() throws Exception;
}
步驟1:創建實現Callable接口的類SomeCallable(略);
步驟2:創建一個類對象:
Callable oneCallable = new SomeCallable();
步驟3:由Callable創建一個FutureTask對象:
FutureTask oneTask = new FutureTask(oneCallable);
註釋:FutureTask是一個包裝器,它通過接受Callable來創建,它同時實現了
Future和Runnable接口。
步驟4:由FutureTask創建一個Thread對象:
Thread oneThread = new Thread(oneTask);
步驟5:啟動線程:
t();
至此,一個線程就創建完成了。
通過繼承Thread類來創建一個線程:
步驟1:定義一個繼承Thread類的子類:
Java代碼:
class SomeThead extends Thraad
{
public void run()
{
//do something here
}
}
步驟2:構造子類的一個對象:
SomeThread oneThread = new SomeThread();
步驟3:啟動線程:
t();
至此,一個線程就創建完成了。
-
java與JavaScript語言有何不同
java和JavaScript是兩個不同的語言。那麼這兩個語言有什麼不同呢?下面本站小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!講個故事:話説很久很久以前,有一個叫網景(Netscape)的,十月懷胎,他生了個兒子,很開興,...
-
Java中基於Aspectwerkz的AOP開發
一、AOP編程概覽面向對象編程技術進入軟件開發的主流對軟件的開發方式產生了極大的影響,開發者可以用一組實體以及這些實體之間的關係將系統形象地表示出來,這使得他們能夠設計出規模更大、更復雜的系統,開發週期也比以前更短。OO開發的唯一問題是,它本質上是靜態...
-
Java中的對象與引用知識詳解
在Java中,有一組名詞經常一起出現,它們就是“對象和對象引用”,很多朋友在初學Java的時候可能經常會混淆這2個概念,覺得它們是一回事,事實上則不然。今天我們就來一起了解一下對象和對象引用之間的區別和聯繫。以下僅供參考!1.何謂對象?在Java中有一句比較流行的話,叫...
-
java xp環境變量設置
本文實例為大家分享了java的環境變量設置方法,供大家參考,具體內容如下安裝好jdk後找到我的電腦(右鍵)——》屬性——》高級選項卡——》環境變量,裏面有管理員的用户變量,有系統變量。選哪一個都無所謂,我選的是Administrator的用户變量即管理員的.用户變量,點擊“新...