新的鎖定界面優於Java中的同步塊的優點是什麼?你需要實現一個高性能的緩存,它允許多個讀者,但單個作家保持完整性,你將如何實現它?新的鎖定界面優於Java中的同步塊的優點是什麼?
回答
鎖的優點是
- 有可能使他們公平
- 有可能讓一個線程響應中斷而鎖定對象上等待。
- 有可能試圖獲取鎖,但立即返回或超時後,如果鎖不能獲得
- 有可能獲得在不同的範圍釋放鎖,並在不同的順序
請注意,這在javadoc of Lock及其子類中有解釋。
高性能緩存可以使用ConcurrentMap來實現。
第二點似乎措辭不妙。您可以中斷在正常的內部Java監視器上等待的線程。 'Lock'具有'lockInterruptibly',它可以在阻塞獲取鎖的同時中斷線程。 –
@Tom:你當然可以中斷阻塞的內存等待內部監視器,但是線程不會響應中斷。這就是我的意思:中斷方法將被調用,但是線程在獲取鎖之前不會自行中斷,並且可以永遠保持這種狀態。我已經改變了措辭,使其更加明確。 –
關鍵是目標線程在'Thread.State.BLOCKED'而不是'Thread.State.WAITING'(或'TIMED_WAITING')。 –
您需要知道何時使用鎖定以及何時使用同步塊/方法。
如果您正在創建簡單應用程序,請使用同步塊。它避免了競賽條件。但是,在避免競爭條件的情況下,您可能會造成死鎖。
如果您正在創建嚴重的應用程序,請使用鎖定。它也避免了競爭條件,但你也有避免死鎖的好處。
這實際上並不是在同步鎖和顯式鎖之間進行選擇的關鍵。一個嚴重的應用程序可能很簡單,使用鎖定顯然也會導致死鎖,如同步一樣。 –
- 1. OkHttpClient的execute()方法中的同步塊的優點是什麼
- 2. 鎖定同步的優點API
- 3. 使用依賴注入優於新的優點是什麼?
- 4. RECFM = FB優於RECFM = F的優點/缺點是什麼?
- 5. 不同字節的優點是什麼?
- 6. C++中新功能「synchronized」塊的優點是什麼?
- 7. pathmunge優於grep的優勢是什麼?
- 8. Kafka優於RabbitMQ的優勢是什麼?
- 9. mysqli_stmt_bind_result的優點是什麼?
- 10. generator.throw()的優點是什麼?
- 11. AspectJ的優點是什麼?
- 12. RTSP的優點是什麼?
- 13. 鎖定等待/通知的優點是什麼?
- 14. 使用同步線程的優點是什麼?
- 15. 定義外鍵的優點是什麼
- 16. NSSortDescriptor優於快速高階函數的優點是什麼?
- 17. 接口優於抽象類的優點是什麼?
- 18. 「a,b,c」.split(「,」)優於[「a」,「b」,「c」]的優點是什麼?
- 19. pwrite和pread優於fwrite和fread的優點是什麼?
- 20. 字節碼優於本地代碼的優點是什麼?
- 21. 使用特徵優於抽象類的優點是什麼?
- 22. 結果集TYPE_FORWARD_ONLY優於TYPE_SCROLL_INSENSITIVE的優點是什麼?
- 23. 使用FutureTask優於Callable的優點是什麼?
- 24. 列表理解優於for循環的優點是什麼?
- 25. T-tree優於B +/-樹的優點是什麼?
- 26. WCF中WSDualHttpBinding的優點是什麼?
- 27. 裝載機優於Android中的Asynctask的優勢是什麼?
- 28. Java的「同步」和C#的「鎖定」有什麼不同嗎?
- 29. java中的匿名類的用例和優點是什麼?
- 30. Java中的阻塞隊列的優點是什麼?
'Lock'並不是什麼新東西,它自從Java5以來一直存在,即從2004年開始 – skaffman