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