大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年Java多線程技術總結篇

2020年Java多線程技術總結篇

更新時間:2020-01-06 16:58:26 來源:動力節點 瀏覽2996次


  小編沒有寫到核心知識,只是簡單說明一下線程概念,多線程實現方式(繼承Thread,實現Runnable)、共享數據的不安全性、停止線程、線程的優先級


2020年Java多線程技術總結篇


  一些方法的使用如下:


  currentThread() 返回當前代碼被哪個線程調用的信息。


  isAlive()判斷當前線程是否處于活躍狀態。


  sleep()指定好描述讓當前執行線程休眠。(不會放棄鎖)


  getId()取得線程唯一標識。


  stop()強制停止,不推薦使用。


  interrupt()停止線程,不能立刻停止線程,是給當前線程打一個停止標記。


  interrupted() 檢測當前線程是否已經中斷,具有清除狀態功能。


  isInterrupted() 檢測線程是否已經中斷。


  suspend() 暫停線程


  resume() 恢復線程


  yield()放棄當前CPU資源,讓給其他任務。


  serPriority() 方法設置優先級,1~10個等級。


  第二章 對象及變量的并發訪問


  第二章作者主要是對并發訪問進行描述,對synchronized關鍵的使用準備了大量的用例,也驗證了使用synchronize時的各種注意事項。


  知識點梳理:


  方法內變量線程安全,實例變量非線程安全。


  使用synchronize關鍵字,對不同對象使用,會產生多個鎖。


  臟讀就是讀取實例變量時此值已經被其他線程更改過。(表里不一)


  synchronize(this)鎖定的是當前對象


  synchronize鎖重入,當前使用synchronize時,當一個線程得到某一個對象鎖后,再次請求此對象鎖可以再次得到鎖。在一個synchronize方法的內部調用本類的其他synchronize方法時,可以直接得到鎖。可重入鎖支持在父子類繼承的環境中。


  同步不具有繼承性,synchronize修飾的方法,繼承后重寫不具備synchronize特性。


  String加油常量池緩存,一般不作為synchronize的鎖對象。


  多線程的死鎖,互相等待對方。


  volatile關鍵字 保證線程可見性且提供了一定的有序性,但是無法保證原子性。在JVM底層volatile是采用“內存屏障”來實現的。


2020年Java多線程技術總結篇


  第三章 線程間通信


  多線程之間的通信,主要通過等待/通知機制實現。方法wait()使當前線程等待(釋放鎖),notify()方法用于喚醒某一個線程,執行完notify()方法后,不會馬上釋放該對象鎖,notifyAll() 用于喚醒全部線程。


  知識點梳理:


  當線程呈wait()狀態時,調用線程對象的interrupt()方法會出現InterruptedException異常。


  wait(long)等待某一時間是否有線程對鎖進行喚醒,如果超過時間自動喚醒。


  在經典的生產者-消費者中,使用while()替代if進行條件判斷,因為wait()方法被喚醒后,是從wait()后代碼繼續執行,不是重新執行。


  通過管道可以進行線程間通信:字節流。提供四個類在線程間通信。PipedInputStream,pipedOutputStream,PipedReader與PipedWrider.


  join() 方法,可以等待線程執行完再執行(等待線程銷毀)。


  方法join(long)內部使用wait(long)來實現,join(long)具有釋放鎖的特點。


  ThreadLocal使每個線程綁定自己的值。


  第四章 Lock的使用


  ReentrantLock的使用,相比于synchronize關鍵的使用顯得更加的靈活,并且加上了更多更強大的功能。調用ReentrantLock獨享的lock()方法獲取鎖,調用unlock()方法釋放鎖。


  使用Condition實現等待通知


  ReentrantLock實現等待/通知需要借助Condition對象,可以實現多路通知,在一個Lock對象里面創建多個Condition對象,注冊對象可以注冊在指定的Condition中,選擇性的對線程通知,調度線程更靈活。


  在notify/notifyAll方法進行通知,被通告的線程由JVM隨機選擇,但是使用ReentrantLock結合Condition可以實現選擇性通知。


  synchronize就相當于整個Lock對象中只有一個單一的Condition對象。


  公平鎖與非公平鎖


  鎖Lock分為“公平鎖”與“非公平鎖”,意味著線程獲取鎖的順序是否根據線程的加載順序來分配。


  可以通過ReentrantLock lock = new ReentrantLock(true) 創建公平鎖,ReentrantLock默認創建的是非公平鎖


  知識點梳理:


  Object類中的wait() 相當于Condition中的await()方法


  Object類中的notify() 相當于Condition中的signal()方法


  Object類中的notifyAll() 相當于Condition中的signalAll()方法


  可以通過ReentrantLock lock = new ReentrantLock(true) 創建公平鎖


  int getHoldCount() 查詢當前線程保持此鎖的各式個數。


  int getQueueLength() 返回正在等待獲取此鎖定的線程估計數


  int getWaitQueueLength(Condition condition) 返回等待與此鎖相關condition的線程估計數


  boolean hasQueuedThread(Thread thread) 查詢指定的線程是否正在等待此鎖。


  boolean hasQueuedThreads() 查詢是否有線程正在等待此鎖。


  boolean hasWauters(Condition condition)查詢是否有線程正在等待與此鎖有關的condition。


  boolean isFait() 是否公平鎖


  boolean isHeldByCurrentThread()查詢當前線程是否保存此鎖


  boolean isLocked() 查詢此鎖是否有任意線程保持。


  void lockInterruptibly() 如果當前線程未被中斷,獲取此鎖。


  boolean tryLock() 僅在調用時鎖定未被另一個線程保持的情況下,才獲取此鎖。


  ReentrantRadWriteLock類,是一種讀寫鎖。有兩個鎖,一個是讀相關鎖,稱為共享鎖;另一個是寫相關鎖,也叫排它鎖。多個讀鎖不互斥,讀寫互斥,寫寫互斥。


2020年Java多線程技術總結篇


       以上就是動力節點Java培訓機構小編介紹的“2020年Java多線程技術總結篇”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


  相關內容


  Java多線程面試題及回答(詳細總結)


  java多線程的狀態轉換以及基本操作


  Java多線程學習,深入解析


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 97中文字幕在线 | 欧美一级视频在线观看 | 亚洲国产成人久久综合区 | 国产亚洲精品国产第一 | 波多野结中文字幕在线69视频 | 黑人边吃奶边扎下面激情视频 | 成人网在线免费观看 | 一级女人18片毛片免费视频 | 四虎影院成人在线观看 | 久久久免费视频观看 | 精品国产调教最大网站女王 | 99视频全部免费 | 亚洲欧美中文字幕在线网站 | 国产高清视频在线免费观看 | 久久久久综合中文字幕 | 欧美一级片 在线播放 | 亚洲黄色成人 | 四虎comwww最新地址 | 亚洲午夜视频在线 | 在线综合色 | 99国产精品高清一区二区二区 | 亚洲曰本大成网站mmm | 亚洲综合色就色手机在线观看 | 欧美兽皇video | 免费永久国产在线视频 | 牛牛a级毛片在线播放 | 波多野结中文字幕在线69视频 | 一区二区三区在线免费视频 | 精品国产一区二区三区香蕉事 | 免费日本黄色网址 | 一区二区三区久久 | 国产成人乱码一区二区三区 | 久热免费在线观看 | 免费国产成人午夜私人影视 | 精品国产精品国产 | 一级特黄性色生活片 | 色欧美在线 | 精品久久伊人 | 亚洲一级黄色大片 | 老司机午夜在线视频免费 | 九九影视理论片在线播放 |