1. 程式人生 > 其它 >Java多執行緒16-執行緒同步問題與演示案例

Java多執行緒16-執行緒同步問題與演示案例

18、執行緒同步機制

多個執行緒操作同一個資源

併發:同一個物件被多個執行緒同時操作

處理多執行緒問題時,多個執行緒訪問同一個物件,並且某些執行緒還想修改這個物件,這時候我們就需要執行緒同步。執行緒同步其實就是一個等待機制,多個需要同時訪問此物件的執行緒進入這個物件的等待池形成佇列,等待前面的執行緒時候完畢,下一個執行緒再使用。

執行緒同步

  • 由於同一程序的多個執行緒共享同一塊儲存空間,在帶來方便的同時,也帶來了訪問衝突問題,為了保證資料在方法中被訪問時的正確性,在訪問時加入鎖機制synchronized,當一個執行緒獲得物件的排它鎖,獨佔資源,其他執行緒必須等待,使用後釋放鎖即可。存在以下問題
    • 一個執行緒持有鎖會導致其他所有需要此鎖的執行緒掛起
    • 在多執行緒競爭下,加鎖,釋放鎖會導致比較多的上下文切換和排程延時,引起效能問題
    • 如果一個優先順序高的執行緒等待一個優先順序低的執行緒釋放鎖會導致優先順序倒置,引起效能問題

本文來自部落格園,作者:Cn_FallTime,轉載請註明原文連結:https://www.cnblogs.com/CnFallTime/p/15902006.html