0
A
回答
7
如果資源是不可變的則不需要進行同步,但除此之外,這裏有一些想法:
限制所有存取只讀:如果不更新資源,那麼任何數量的併發線程可以安全地看了訪問它。
複製每位訂閱者的資源:任何數量的線程都可以擁有自己的資源副本並安全地對其進行修改,而不會影響其他擁有自己副本的線程。 (例如
ThreadLocal
)使用的原子參考模擬同步:一個「吸氣劑」的方法使用檢查原子參考(例如
AtomicBoolean
)來創建一個「檢查」 /「簽出」系統,以確保只有一個線程可以訪問資源,不需要同步。從
java.util.concurrent.locks
使用鎖:其可提供相同的(或者甚至更好的)功能,而無需使用關鍵字。
當然,面試官可能會施加額外的限制,但考慮到您的問題中的信息很少,這些都是很好的起點。
1
這要看情況,如果有可能,但隨之而來的腦海裏: 充分利用共享資源不可變,或使共享資源無國籍
0
可能是下面的鏈接是對您有用....
http://java.sun.com/developer/technicalArticles/J2SE/concurrency/
0
可以使用的鎖定對象。檢查這個例子:ReentrantReadWriteLock
2
使資源IMMUTABLE:這是來自Oracle的官方Java教程:http://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html。
0
如果使用volatile關鍵字不被認爲是「同步代碼」,那麼它可能有助於某些情況。那麼如何使用像ConcurrentHashMap或Vector一樣同步的集合類呢?
相關問題
- 1. 如何在代碼優先的情況下共享EF6對象
- 2. 如何在不共享源代碼的情況下分發ROS包
- 3. 如何在不共享源代碼的情況下創建和使用Android庫?
- 4. 如何同步不同的Java程序來訪問公共資源
- 5. 在不訪問HTML源代碼的情況下實現Google Analytics
- 6. Clojure對共享資源的異步訪問
- 7. 共享資源,例如帶寬同步
- 8. 對資源的同步訪問
- 9. Java:將創建對象的訪問權授予共享資源
- 10. 在Java中同步對資源的訪問(Spring MVC)
- 11. php如何在不訪問數據庫的情況下共享數據
- 12. 如何在不下載源代碼的情況下使用EXSLT?
- 13. 如何同步MsBuild中的項目之間的共享資源
- 14. 如何在不重寫java的情況下回憶java代碼?
- 15. 如何在不編譯代碼的情況下修改全局資源DLL?
- 16. 的Infinispan:clustred情況下不共享緩存
- 17. 如何在不鎖定的情況下同步對象?
- 18. 爲什麼在以下情況下資源ID無法訪問?
- 19. 如何在不更改源代碼的情況下禁用TLSv1?
- 20. 如何在不編譯源代碼的情況下安裝Numpy
- 21. 如何在不使用java參數的情況下訪問不同類的值?
- 22. 如何從不同的測試情況下訪問測試步驟在getXMLHolder
- 23. 不同的WAR文件,共享資源
- 24. 併發訪問共享資源
- 25. 從jar共享庫訪問資源
- 26. 「同步訪問線程」與「同步共享對象」相反嗎?
- 27. 在不訪問網站的情況下啓動PHP代碼
- 28. 在不修改原始源代碼的情況下擴展訪問者模式?
- 29. 在不安裝Outlook的情況下訪問共享的Outlook日曆?
- 30. 如何在不打開UIActivityViewController的情況下共享whatsapp?
將所有訪問限制爲只讀?複製每個用戶的資源?使用原子引用來模擬同步? – maerics 2012-03-22 16:25:30
我想詳細說明你的情況是什麼樣的,你想達到什麼樣的目的最終會幫助你獲得更好/更有幫助的答案 – posdef 2012-03-22 16:32:23