Java多線程

在程序中啓動一個新線程運行一段代碼有兩種方式

一.繼承Thread類
1.子類覆蓋父類中的run方法,將線程運行的代碼存放在run中。
2.建立子類對象的同時線程也被創建。
3.通過調用start方法開啓線程。

二.實現Runnable接口
1.子類覆蓋接口中的run方法。
2.通過Thread類創建線程,並將實現了Runnable接口的子類對象作爲參數傳遞給Thread類的構造函數。
3.Thread類對象調用start方法開啓線程。

 

Thread常用方法:

start(); -->啓動線程。

sleep(); -->線程休眠。

getName(); -->獲取當前線程的名稱。

currentThread(); -->獲取當前線程對象。

interrupt(); -->中斷線程的凍結狀態,使線程回到運行狀態,並拋出異常。

setPriority(int num);-->設置線程優先級。

setDaemon(boolean b); -->設置是否是守護線程,即後臺線程,前臺線程結束,守護線程自動結束。

join(); -->當A線程執行到B線程的join()方法時,A線程會等待B線程結束後,再繼續執行。

yield(); -->放棄CPU控制權。

wait(); -->線程等待。

notify();-->喚醒第一個等待的線程。

notifyAll();-->喚醒所有等待的線程。

 

由於線程同步synchronized效率低,在JDK1.5中被Lock接口所替代。

 ReentrantLock實現了Lock接口,常被Lock實例化;一個Lock對象上允許創建多個Condition對象。

Lock常用方法:

lock(); -->加鎖

unlock(); -->解鎖

Condition常用方法:

await(); -->Condition上的線程等待。

signal(); -->喚醒Condition上第一個等待的線程。

signalAll(); -->喚醒Condition上所有等待的線程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章