初步理解多執行緒程式設計

2021-09-26 05:35:03 字數 1886 閱讀 4004

1.繼承thread類,重寫run()方法thread本質上也是實現了runnable介面的乙個例項。需要注意的是呼叫start()方法後並不是立即地執行多執行緒的**,而是使該執行緒變為可執行態,什麼時候執行多執行緒**是由作業系統決定的。以下是其

主要步驟:

(1)定義thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此,run()方法被稱為執行體。

(2)建立thread子類的例項,即建立了執行緒物件。

(3)呼叫執行緒物件的start()方法來啟動該執行緒。

class somethead extends thraad     

} somethread onethread = new somethread();

onethread.start();

2.實現runnable介面,並實現該介面的run()方法

以下是其主要步驟:

(1)自定義類並實現runnable介面,實現run()方法。

(2)建立thread子類的例項,用實現runnable介面的物件作為引數

例項化該thread物件。

(3)呼叫thread的start()方法來啟動該執行緒。

class somerunnable implements runnable     

} runnable onerunnable = new somerunnable();

thread onethread = new thread(onerunnable);

onethread.start();

3.實現callable介面,

重寫call()方法callable介面實際是屬於executor框架中的功能類,callable介面與runnable介面的功能類似,但提供了比runnable更強大的功能,主要表現為以下3點:

(1)callable可以在任務接受後提供乙個返回值,runnable無法提供這個功能。

(2)callable中的call()方法可以丟擲異常,而runnable的run()方法不能丟擲異常。

(3)執行callable可以拿到乙個future物件,future物件表示非同步計算的結果,它提供了檢查計算是否完成的方法。由於執行緒屬於非同步計算模型,因此無法從別的執行緒中得到函式的返回值,在這種情況下就可以使用 future 來監視目標執行緒呼叫 call()方法的情況。但呼叫 future的get()方法以獲取結果時,當前執行緒就會阻塞,直到call()方法返回結果。在這3種方式中,一般推薦用實現runnable介面的方式,其原因是,乙個類應該在其需要加強或者修改時才會被繼承。因此如果沒有必

要重寫thread類的其他方法,那麼在這種情況下最好用實現runnable介面的方式。

public inte***ce callable    

//步驟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:啟動執行緒:

onethread.start();

多執行緒初步理解

題目 某銀行有至多三個視窗提供服務。該銀行每天至多服務100人次 初始時,只有乙個視窗開放,如果等待人數超過兩人 包含正在辦理業務的人 才開放下乙個視窗。這個小小的問題裡面包含幾個關鍵點 顯然三個視窗可以用三個執行緒來做,那麼如何得到三個執行緒服務的總人數?涉及到多執行緒資料同步問題。100人次可能...

多執行緒程式設計理解

1 引發執行緒問題的核心是因為資源共享。2 執行緒分為兩種 2.1 應用執行緒,也就是通常我們理解的執行緒。3 執行緒的定義方式 3.1 繼承thread類。3.2 實現runable介面。區別是 繼承和介面實現的區別。4 每個執行緒在執行前都能計算出所需的棧大小,計算單位 槽。索引佔位符和基本型別...

Windows 的多執行緒程式設計初步

一般情況下多執行緒程式設計多採用mfc類庫實現,那麼如果不使用mfc 如何進行多執行緒程式設計呢?本文將就這個問題進行討論 微軟在windows api中提供了建立新的執行緒的函式createthread,它的語法如下 hthread createthread security attributes...