多執行緒和同步

2021-06-20 19:42:02 字數 926 閱讀 4239

分幾種情況:

1. 其他方法前是否加了synchronized關鍵字,如果沒加,則能。     

2. 如果這個方法內部呼叫了wait,則可以進入其他synchronized方法。      

3. 如果其他個方法都加了synchronized關鍵字,並且內部沒有呼叫wait,則不能。

4. 如果其他方法是static,它用的同步鎖是當前類的位元組碼,與非靜態的方法不能同步,因為非靜態的方法用的是this。

乙個程式中可以有多條執行線索同時執行,乙個執行緒就是程式中的一條執行線索,每個執行緒上都關聯有要執行的**,即可以有多段程式**同時執行,每個程式至少都有乙個執行緒,即main方法執行的那個執行緒。

如果只是乙個cpu,它怎麼能夠同時執行多段程式呢?這是從巨集觀上來看的,cpu一會執行a線索,一會執行b線索,切換時間很快,給人的感覺是a,b在同時執行,好比大家在同乙個辦公室上網,只有一條鏈結到外部網線,其實,這條網線一會為a傳資料,一會為b傳資料,由於切換時間很短暫,所以,大家感覺都在同時上網。

狀態:就緒,執行,synchronize阻塞,wait和sleep掛起,結束。

wait必須在synchronized內部呼叫。 呼叫執行緒的start方法後執行緒進入就緒狀態,執行緒排程系統將就緒狀態的執行緒轉為執行狀態,遇到synchronized語句時,由執行狀態轉為阻塞,當synchronized獲得鎖後,由阻塞轉為執行,在這種情況可以呼叫wait方法轉為掛起狀態,當執行緒關聯的**執行完後,執行緒變為結束狀態。

lock能完成synchronized所實現的所有功能 的異同?

主要不同點:

lock有比synchronized更精確的執行緒語義和更好的效能。

synchronized會自動釋放鎖,而lock一定要求程式設計師手工釋放,並且必須在finally從句中釋放。

lock還有更強大的功能,例如,它的trylock方法可以非阻塞方式去拿鎖

多執行緒和執行緒的同步

一 執行緒同步的目的?有一些特定的 或者資料不希望被多個執行緒執行,比如 乙個全域性變數被多個執行緒同時做自增操作時,可能會造成逾期結果和實現結果不一致的問題。二 執行緒同步的幾種方法 執行緒同步有很多種方法,以下介紹三種方法 鎖同步 訊號量 events事件。三 鎖同步 1 基本原理 鎖是pyth...

多執行緒同步

synchronized 物件 其中物件相當於乙個標誌 鎖 用於判斷 同步 塊 同步的前提必須是兩個或兩個以上的執行緒,且共用同乙個鎖 同步解決了多執行緒的安全問題 弊端 多執行緒需要判斷鎖,消耗了資源 同步函式 將synchronized放在函式名前面即可 即具有同步性質 使用的鎖是this 靜態...

多執行緒同步

同步 即限制某個資源在同一時間只能被同乙個執行緒訪問。執行緒安全問題 多個執行緒共同處理共享資源所導致的。解決 多執行緒處理乙個共享資源時,將處理共享資源的 利用關鍵字synchronized修飾。同步 塊 synchronized修飾 塊,synchronized lock 同步方法 synchr...