亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

面試題:ReentrantLock和Atomic使用場景

面試題:ReentrantLock和Atomic使用場景

炎炎設計 2018-07-31 17:28:20
在面試的時候,面試官提出了讓比較ReentrantLock和Atomic兩者的適用場景,歡迎各路大神前來解答。
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

Atomic是指AtomicInteger吧?這種可以保證諸如在多線程下實現i++這樣的功能,這個應該是用的最多的,因為傳統的int類型的i++并不是原子操作。

查看完整回答
反對 回復 2018-08-04
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你說的Atomic是指Synchronized嗎,個人淺見是:

  1. Synchronized比ReentrantLock進java標準早,因此一開始大家都是用它。相當于Java提供了一種封裝的互斥鎖機制,對于用戶來說,聲明成synchronized就可以拿到鎖的能力,而不用管具體是怎么加鎖解鎖的

  2. 使用簡便也是雙刃劍,synchronized的粒度較粗,可控性較差。比如無法中斷一個正在等候獲得鎖的線程,也無法通過投票得到鎖等等。很多場景不是一個互斥鎖就能搞定的。

  3. 所以Java搞了個java.util.concurrent.locks.Lock的接口,并實現了各種類型的鎖,其目的就是為了適應各種不同場景下的鎖需求,ReenTrantLock就是其中的一種。

  4. ReenTrantLock也是一種互斥鎖,但它比Synchronized

    • 提供了更多功能,比如tryLock,拿不到鎖立即返回等

    • 可伸縮性更強??缮炜s性意味著在鎖競爭的時候能夠在調度上少花時間,提高吞吐率,更高效利用CPU

    • 可編程性強,它是一個鎖對象,可以在代碼里面傳來傳去,比較靈活

  5. 不過ReenTrantLock用起來肯定沒有Synchronized方便,要顯式解鎖,一旦忘了就麻煩了


查看完整回答
反對 回復 2018-08-04
  • 2 回答
  • 0 關注
  • 2120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號