Java中Thread類的方法簡介

2021-08-20 12:17:22 字數 2109 閱讀 9708

thread t1 =

newthread();

t1.start();

新建執行緒,應該呼叫start()方法啟動執行緒;如果直接呼叫run()方法,該方法也會執行,但會被當做乙個普通的方法,在當前執行緒中順序執行;而如果使用start()方法,則會建立乙個新的執行緒執行run()方法。

public

void

interrupt();

public

boolean

isinterrupted();

public

static

boolean

interrupted();

三個方法很相似,執行緒中斷只是通知目標執行緒有人希望你退出,而並不是使目標執行緒退出。

第乙個方法是通知目標執行緒中斷,即設定目標線稱的中斷標誌位;

第二個方法判斷當前執行緒是否被中斷,如果被中斷(即中斷標誌位被設定),則返回true,否則返回false;

第三個方法判斷當前執行緒的中斷狀態,並清除該執行緒的中斷標誌位(也就意味著,如果連續呼叫兩次該方法,並且中間沒有再次設定中斷標誌位,第二次會返回false,因為中斷標誌位已經被清除)。

public

static

native

void

sleep(long millis) throws interruptedexception;

sleep()方法會將當前執行緒休眠若干ms,如果在休眠期間被呼叫interrupt()方法,則會丟擲interruptedexception異常。如下:

public

class

testthread

implements

runnable

try catch (interruptedexception e)

thread.yield();}}

public

static

void

main(string args)

}

public

final

void

wait() throws interruptedexception;

public

final

native

void

notify();

public

final

native

void

notifyall();

obj.wait()是設定當前執行緒在該物件上等待,直到有執行緒呼叫obj.notify()方法(或notifyall()方法)。當呼叫wait()方法後,該執行緒會進入乙個等待佇列,等待佇列中可能有多個執行緒,notify()會隨機喚醒其中乙個執行緒,而notifyall()會喚醒所有執行緒。

wait()和notify()方法必須在sychronized**塊中,呼叫這些方法時都需要先獲得目標物件的乙個監視器,然後呼叫這些方法時會釋放監視器

與sleep不同的是,sleep()會一直占有所持有的鎖,而wait()會釋放鎖。

public

final

void

join() throws interruptedexception;

public

static

native

void

yield();

如果乙個執行緒的執行需要另乙個執行緒的參與(比如當前執行緒執行需要另乙個執行緒執行完畢才能繼續執行),這時候可以呼叫join()方法。t1.join()方法表示等待執行緒t1執行完畢之後,當前執行緒再繼續執行。當然也可以給join()設定時間引數。

注:join()的本質是讓呼叫執行緒wait()在當前執行緒物件例項上,其部分原始碼如下:

while (isalive())
當執行緒執行完畢後,它會讓被等待的執行緒在退出前呼叫notifyall()通知所有等待的執行緒繼續執行。因此不要在thread物件例項上使用類似wait()或者notify()等方法。

yield()方法是使當前執行緒讓出cpu,但該執行緒會再次搶奪cpu。

java中Thread類的join方法

單核cpu執行多執行緒時底層實現原理是多個執行緒間切換,由於cpu的處理速度很快,看上去像多個執行緒同時執行。那麼我們如何實現讓執行緒t1,t2,t3,在t1執行完成後才執行t2,t2執行完成後才執行t3,也就是執行緒的序列化,通過thread類的join方法就可以實現。join方法 將該執行緒加入...

java中的Thread類的join

join是thread的例項方法,官方解釋為 等待該執行緒終止。其作用就是將呼叫join的執行緒優先執行,當前正在執行的執行緒阻塞,直到呼叫join方法的執行緒執行完畢或者被打斷,主要用於執行緒之間的互動。還有兩個過載的方法 1 join long millis 等待該執行緒終止的時間最長為 mil...

Thread類中的常用方法

1.start 啟動當前執行緒 呼叫當前執行緒的run 2.run 通常需要重寫thread類中的此方法,將建立的執行緒要執行的操作宣告在此方法中 3.currentthread 靜態方法,返回執行當前 的執行緒 4.getname 獲取當前執行緒的名字 5.setname 設定當前執行緒的名字 6...