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. 如何在不共享源代碼的情況下創建和使用Android庫?
- 2. 在不訪問HTML源代碼的情況下實現Google Analytics
- 3. 如何在不下載源代碼的情況下使用EXSLT?
- 4. 如何在不編譯代碼的情況下修改全局資源DLL?
- 5. 如何在不更改源代碼的情況下禁用TLSv1?
- 6. 如何在不使用java參數的情況下訪問不同類的值?
- 7. 不同的WAR文件,共享資源
- 8. 「同步訪問線程」與「同步共享對象」相反嗎?
- 9. 併發訪問共享資源
- 10. 從jar共享庫訪問資源
- 11. 在不修改原始源代碼的情況下擴展訪問者模式?
- 12. 如何在不打開UIActivityViewController的情況下共享whatsapp?
- 13. 如何在不映射的情況下共享POJO?
- 14. 如何在不使用GAC的情況下共享庫?
- 15. 如何在不用CMake重新編譯源代碼的情況下構建共享庫和靜態庫
- 16. 是否可以從共享資源訪問JSF 2非共享資源
- 17. 碼頭在異步情況下訪問時的ServletRequest方法
- 18. 在沒有同步訪問的情況下在線程之間共享大數據
- 19. 如何訪問2個線程之間的共享資源?
- 20. 如何在使用mod_wsgi時控制對共享資源的訪問?
- 21. 如何添加跨源資源共享在我的Java FIE
- 22. 在不暴露代碼的情況下與多個用戶共享R功能
- 23. 如何在共享主鍵的情況下訪問對象作爲JPA中的一對一關係?
- 24. WPF共享資源問題 - 沒有App.xaml,沒有共享資源
- 25. 如何在不使用代碼的情況下從ItemTemplate訪問ListViewDataItem?
- 26. 硒FirefoxDriver:共享會話/不同的情況下
- 27. Docker如何共享資源
- 28. 如何在不使用FlexContext的情況下從Java服務對象訪問Principal?
- 29. 如何在同一資源上同步兩個進程訪問?
- 30. 如何共享不同的CoffeeScript文件中的代碼在Rails的資產Pipeleine
將所有訪問限制爲只讀?複製每個用戶的資源?使用原子引用來模擬同步? – maerics 2012-03-22 16:25:30
我想詳細說明你的情況是什麼樣的,你想達到什麼樣的目的最終會幫助你獲得更好/更有幫助的答案 – posdef 2012-03-22 16:32:23