天天看點

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上所有等待的線程。

上一篇: java 多線程
下一篇: Java多線程