java多執行緒系列03

2021-07-14 11:10:06 字數 1698 閱讀 8099

建立執行緒的兩種方式:

1繼承thread類,

步驟 1定義類繼承thread

2複寫thread類中的run方法,目的:將自定義的**儲存在run方法,讓執行緒執行

3呼叫該執行緒的start方法,該方法兩個作用:啟動執行緒,呼叫run方法。(此時執行緒處於runnable狀態),從而使執行緒啟動去同其他執行緒一起去強度cpu資源執行權(獲取到cpu資源後就變成run狀態)。

2 實現runnable介面,

步驟:1定義類實現runnable介面

2 覆蓋runnable介面中的run方法(將執行緒要執行的**存放在run方法中)

3 通過thread類建立執行緒物件

4 將實現runnable介面的子類物件作為實際引數傳入執行緒物件的構造方法中(建立執行緒物件的時候就要明確要執行的**)。

此處為什麼這樣做?--》因為自定義的run方法所屬的物件是runnable介面的子類物件,所以要讓執行緒去執行指定物件的run方法,就必須明確該run方法所屬的物件。

5呼叫thread類的start方法開啟執行緒並呼叫runnable介面子類的run方法。

兩種方式的區別:

1 繼承thread類   執行緒**存放在子類的run方法中

2 實現runnable介面     執行緒**存放在實現runnable介面的子類的run方法中。(較常用)

執行緒子類呼叫 start方法後出現交替列印(主線程與thdo執行緒互相搶奪cpu資源)

package threaddemo1;

/* anthor lnw

* thread繼承類的run與start對比

方式二的使用:

如何調整執行緒名稱:

由於threaddem2類是thread類的子類,在thread類  api中獲取執行緒名稱可以通過getname()獲取,修改可通過thread(string name)分配新的thread物件,都是對基類thread的操作,所以子類可以通過this.getname()獲取,通過子類建構函式threaddem2(string name)

package threaddemo1;

/* *

* 注意此處的super()的使用

Java多執行緒03

生產者檢查倉庫是否已經滿了,如果沒滿,將生產產品 如果倉庫已滿,停止生產產品。消費者檢查倉庫是否已空,倉庫不空,消費者消費產品 若空,消費者停止消費產品。分析 這是乙個執行緒同步問題,生產者和消費者共享同乙個資源,並且生產者和消費者之間相互依賴,互為條件。對於生產者,沒有生產產品之前,要通知消費者等...

執行緒系列03,多執行緒共享資料,多執行緒不共享資料

多執行緒程式設計,有時希望每個執行緒的資料相互隔離互不影響,有時卻希望執行緒間能共享資料,並保持同步。本篇體驗多執行緒共享和不共享資料。多執行緒不共享資料 對於多執行緒,clr到底是怎樣為它們分配記憶體棧空間呢?是 乙個蘿蔔乙個坑 每個執行緒都有自己的棧空間 還是 大樹底下好乘涼 所有的執行緒共享同...

03 Java多執行緒 執行緒等待通知機制

三 執行緒等待通知 四 參考 如果等待時長為t,當前時間為now,那麼now t以後超時 long overtime now t long remain t while result不滿足 remian 0 return result shop類模擬商店,初始狀態玩具是nothing,執行緒等待玩具...