并發(fā)模型之線程與鎖

三個(gè)問題

  • 競(jìng)態(tài)條件
  • 死鎖
  • 內(nèi)存可見性

規(guī)則

  • 訪問共享變量時(shí)需要同步
  • 讀線程和寫線程都要同步化
  • 持有鎖的時(shí)間應(yīng)該盡可能短
  • 按照全局的固定的順序來獲得多把鎖
  • 持有鎖時(shí)避免調(diào)用外星方法

java中的一些問題

  • 編譯器的靜態(tài)優(yōu)化可以打亂代碼的執(zhí)行順序
  • JVM的動(dòng)態(tài)優(yōu)化也會(huì)打亂代碼的執(zhí)行順序
  • 硬件可以通過亂序執(zhí)行來優(yōu)化其性能

線程

  • 有時(shí)候一個(gè)線程的修改 可能對(duì)另一個(gè)線程不可見

java內(nèi)存模型

  • 如果讀線程和寫線程不進(jìn)行同步,就不能保證可見性
  • 同步方法
    • 獲取對(duì)象內(nèi)置鎖
    • 開啟一個(gè)線程并且通過join()檢查線程是否已經(jīng)終止。
    • 使用java.util.concurrent包提供的工具
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容