二、多線程-基礎(chǔ)2-幾個關(guān)鍵字

  • start()run() 方法 (start會新啟一個線程,run不會)
  • run()方法就是普通對象的普通方法
  • start()方法 java才會將線程對象和操作系統(tǒng)中的實際線程進行映射,再來執(zhí)行run()方法
  • yield() 讓出cpu的執(zhí)行權(quán),將線程從運行狀態(tài)轉(zhuǎn)到可運行狀態(tài),但是下個時間片,該線程依然有可能被再次選中運行

  • 守護線程和主線程共死,finally不能保證一定執(zhí)行

  • synchronized內(nèi)置鎖

  • 對象鎖,鎖的是類的對象實例
  • 類鎖,鎖的是每個類的Class對象,每個類的Class對象在一個虛擬機中只有一個,所以類鎖也只有一個。
  • private static synchronized void synClass(){ }
  • volatile 適用于只有一個線程寫,多個線程讀的場景,因為它只能確??梢娦浴?/p>

  • ThreadLocal 線程變量??梢岳斫鉃槭莻€map。類型Map<Thread,Integer>

  • 線程間協(xié)作。輪訓(xùn):難以保證及時性,資源開銷很大

  • 等待通知

  • wait() 對象上的方法
  • notify() / notifyAll() 對象上的方法。注意 應(yīng)該盡量使用notifyAll,使用notify因為有可能發(fā)生信號丟失的情況。
  • join() 線程A,執(zhí)行了線程B的join方法,線程A必須要等待B完成了以后,線程A才能繼續(xù)自己的工作。

  • yield() sleep() wait() nodify() 對鎖影響

  • yield():線程在執(zhí)行yield()以后,持有的鎖是不會釋放的
  • sleep(): sleep() 方法被調(diào)用以后,持有的鎖是不釋放的
  • wait(): 調(diào)動方法之前,必須要持有鎖。調(diào)用了wait()方法以后,鎖就會被釋放,當(dāng)wait()方法返回的時候,線程會重新持有鎖
  • notify(): 調(diào)動方法之前,必須要持有鎖,調(diào)用notify()方法本身不會釋放鎖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Java多線程學(xué)習(xí) [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,108評論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,597評論 1 15
  • 此片文章主要總結(jié)的是Thread類及相關(guān)的基礎(chǔ)概念和API,首先需要厘清線程調(diào)度中的幾個基本概念: 一、線程調(diào)度的...
    千淘萬漉閱讀 2,694評論 0 2
  • 林炳文Evankaka原創(chuàng)作品。轉(zhuǎn)載自http://blog.csdn.net/evankaka 本文主要講了ja...
    ccq_inori閱讀 735評論 0 4
  • 一擴展javalangThread類二實現(xiàn)javalangRunnable接口三Thread和Runnable的區(qū)...
    和帥_db6a閱讀 592評論 0 1

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