多線程筆記

什么是線程安全

當多個線程在訪問某一個類(對象或方法)時,這個類都能表現(xiàn)出正確的行為,那么這個類就是線程安全的。

什么是對象鎖和類鎖

當對象的方法使用synchronized修飾的時候,是對象鎖,不同的對象可以同時調用此方法
當類的synchronized方法使用static是類鎖,同一時間只能被一個線程調用。

多線程的臟讀是如何產(chǎn)生的

當一個對象的set方法未執(zhí)行完成時,對象的get方法執(zhí)行,讀到錯誤的數(shù)據(jù)。解決方法是對get的set方法都加上synchronied修飾

synchronized擁有鎖重入的功能如何理解

當一個線程得到對象的鎖之后,再次請求此對象可以再次得到鎖。
如對象有兩個同步方法A,B,A調B也是可以的。
如果父類和子類的方法都實現(xiàn)了同步,子類也可以調用父類的方法。

notify和wait有何不同

notify用于喚醒線程,不釋放鎖
wait使線程進入阻塞狀態(tài),釋放鎖

如何實現(xiàn)實時的通知

CountDownLatch
AtomicInteger
AtomicInteger,一個提供原子操作的Integer的類。在Java語言中,++i和i++操作并不是線程安全的,在使用的時候,不可避免的會用到synchronized關鍵字。而AtomicInteger則通過一種線程安全的加減操作接口。
ThreadLocal

BlockingQueue 都有哪些方法

header 1 header 2 3
add 增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
remove 移除并返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
element 返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
offer 添加一個元素并返回true 如果隊列已滿,則返回false
poll 移除并返問隊列頭部的元素 如果隊列為空,則返回null
peek 返回隊列頭部的元素 如果隊列為空,則返回null
put 添加一個元素 如果隊列滿,則阻塞
take 移除并返回隊列頭部的元素 如果隊列為空,則阻塞

remove、element、offer 、poll、peek 其實是屬于Queue接口。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 該文章轉自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,473評論 3 87
  • Java多線程學習 [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,117評論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,606評論 1 15
  • 寫在前面的話: 這篇博客是我從這里“轉載”的,為什么轉載兩個字加“”呢?因為這絕不是簡單的復制粘貼,我花了五六個小...
    SmartSean閱讀 4,966評論 12 45
  • 作為孩童,臨近生日的我們總是興奮的。無論是物質的升華還是精神的慰藉都讓我們在這對自己來說特別的一天感到歡快。 怎么...
    木之洲閱讀 2,450評論 2 2

友情鏈接更多精彩內容