執行緒資料共享與協作

2021-09-24 21:37:21 字數 1974 閱讀 1124

執行緒協作

測試類

public

class

threadsharedatatest

}

執行緒類

class

newthread

extends

thread

@override

public

void

run()}

}

結果:在兩個執行緒之間是同乙個物件,這樣就實現了資料的共享

測試類

public

class

threadsharedatatest

}

執行緒類

class

newthread

extends

thread

}}

結果

雖然可能多次執行的執行緒的執行順序可能不同,但是只要在乙個執行緒拿到物件鎖之後,其他執行緒就需要等待,在乙個執行緒執行完之後釋放鎖之後,再開始另外乙個執行緒。

public

class

threadtogetherworktest

class

timethread

extends

thread

}class

displaytimethread

extends

thread

}}

結果

有可能為 (displaytimethread執行緒先奪取到了cpu的執行權)

或者為(timethread執行緒先奪取到了cpu的執行權)

public

class

threadtogetherworktest

class

timethread

extends

thread

}class

displaytimethread

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)

} system.out.

println

(time);}

}}

public

class

threadtogetherworktest

class

timethread

extends

thread}}

class

displaytimethread

extends

thread

catch

(interruptedexception e)}}

system.out.

println

(time);}

}}

結果

注意:wait方法和sleep方法的區別

1. wait方法非靜態但是是object的方法;sleep是thread的靜態方法

2. wait方法要配合synchronized以及notify使用;sleep不需要

3. 執行wait方法時當前執行緒進入阻塞狀態,並且釋放物件鎖;執行sleep方法當前執行緒雖然也會進入阻塞狀態,但是並不釋放物件鎖

執行緒間的共享和協作

執行緒間的協作 synchroniezd 可以修飾方法或者以同步塊的方式使用。它可以確保多個執行緒在同一時刻,只能有乙個執行緒處於方法或者同步 塊中,保證了執行緒對於變數的訪問的可見性與排他性,又稱之為內鎖機制。物件鎖和類鎖 物件鎖是用於物件例項方法,或者乙個物件例項上的,類鎖是用於類的靜態方法或者...

執行緒 角色與協作

多執行緒使用場景 主 控 執行緒召喚了幾個小弟來解決主 控 執行緒不方便處理的問題 召喚乙個小弟或召喚一群小弟,各有分工,協同完成任務。普通的程式塊通過if else等流控來控制業務流程 執行緒通過執行緒變數來控制 與人類社會 公司組織 類似,執行緒程式設計的主要思想是任務分解 分離與匯報機制 執行...

UNIX多執行緒資料共享與執行緒同步

在unix中,乙個程序讓另外實體進行某項事務而採取的操作為fork的乙個子程序,子進 程只是將父程序的資料區拷貝乙份到自己的資料區。在符合posix標準的unix作業系統下 同乙個程序的執行緒之間共享程序指令 大多數資料 執行緒私有資料除外 訊號處理 方式 程序執行環境等。由於執行緒共享程序的全域性...