Javascript有Transferable Objects用於將對象轉移到web worker而不爲了線程安全而進行復制。一旦網絡工作者擁有它,應用就不再需要引用該對象,因此不需要複製。換句話說,參考資料是由工人或應用程序持有,但不是同時持有。 Java中是否有類似的機制?java是否有可轉移對象(多線程概念)
回答
不,根據定義,java沒有Transferable對象,因爲JVM中沒有任何東西可以阻止兩個引用值引用同一個實例。
但是,存在各種各樣的構建器(參見Builder Pattern, Wikipedia),它們可用於構建對象,然後構建一個不可變的實例,然後通過不可變的方式實現線程安全。最着名的建築師是StringBuilder
。我不知道有哪些java開箱即用的構建器,但我知道有許多庫都有構建器,例如Guava (Wikipedia),請參閱ImmutableMap.Builder<K,V>
(Google guava documentation)。
我認爲引入不可變對象作爲構建者的副產品是誤導性的。當然,一些不可變的對象需要構建者,但是很多其他人(比如'String','Integer'等)則不需要。 –
另外,爲什麼''? –
@AndyTurner'Integer'當然不需要構建器,但是你怎麼能說'String'不是?那麼'StringBuilder'的目的是什麼? –
- 1. Java線程概念
- 2. 對多線程概念有點困惑
- 3. 多線程概念
- 4. java中多線程的概念
- 5. java多線程的核心概念
- 6. Wait()和Notify()概念 - Java多線程
- 7. Java線程概念/演示
- 8. 線程概念
- 9. 線程概念
- 10. C#:線程和多線程的概念
- 11. 我們是否有C++中的晃動對象的概念
- 12. 是否有ZODB一個主鍵概念對象
- 13. C++程序線程概念
- 14. JMS多線程概念與MQ
- 15. 何處使用多線程概念
- 16. C#多線程概念問題
- 17. 線程是一個Windows概念嗎?
- 18. 概念線程問題
- 19. 線程和塊概念
- 20. 學習線程概念
- 21. 面向對象,對象概念
- 22. iPhone SDK中是否有Android Intent概念
- 23. Oracle是否有過濾索引概念?
- 24. ASP.NET MVC是否具有App_Code概念?
- 25. Java ArrayList概念
- 26. Java Array概念
- 27. 概念在Java
- 28. 有沒有像Java這樣的PHP可用的任何線程概念?
- 29. 是否有支持Erlang「移動代碼」概念的.NET框架?
- 30. GridFS Java對象是否線程安全?
不,但我們有鎖。 :)如果你的對象實現了某種接口,你也可以創建一個代理對象。 – biziclop