6
A
回答
5
線程安全對象是允許多線程併發訪問的對象。它們的實現保證(例如通過鎖定/同步方法/ ...)它們不會進入無效狀態。另外,不應該丟失數據。
不可變對象創建後可能不會更改。所以:是的,他們是某種無國籍人。
由於不可變對象無法更改,因此不需要鎖定 - 對對象的讀取訪問始終是線程安全的(當不修改變量時)。因此,真正的不可變對象始終是線程安全的。
4
不可變對象:不改變其內部狀態的對象。
與線程安全的關係:如果一個對象不能被改變,跨線程使用它是安全的,即不需要鎖定或類似的來確保跨線程的一致性。
10
不可變對象是無法更改的對象。如果一個對象不能被改變,那麼不用擔心競爭線程會改變正在執行的線程的「背後」的對象狀態,因此不需要通過同步或其他技術來保護不可變對象。
相關問題
- 1. 爲什麼不可變的對象拋出UnboundLocalError但可變的對象不?
- 2. 對象不可變與對象的引用是不可變的是什麼區別?
- 3. 除了Java中的String之外,什麼是不可變對象?
- 4. 爲什麼String對象在java中是不可變的?
- 5. 爲什麼不可變對象是線程安全的?
- 6. django - 爲什麼request.POST對象是不可變的?
- 7. 將不可變對象轉換爲可變對象(遞歸)的最佳方法是什麼?
- 8. 爲什麼我的不可變對象突變Scala
- 9. 是System.Security.SecureString對象是不可變還是可變的?
- 10. C++爲什麼變量是函數而不是對象?
- 11. 爲什麼在不可變對象中使用getter而不是公用字段?
- 12. 我不明白爲什麼在Java中不可變對象inherrently總是線程
- 13. 爲什麼不增加對象變量?
- 14. 什麼是對象SqlConnection.BeginTransaction對
- 15. 不可變的,爲什麼我使用fromJS的嵌套對象在使用重選時不是不可變的
- 16. javascript:File對象是不可變的嗎?
- 17. Java是否優化不可變對象?
- 18. jQuery對象是不可變的?
- 19. ReadonlyCollection,對象是不可變的嗎?
- 20. 爲什麼'model'對象不可迭代?
- 21. snmpset對象不可寫。爲什麼?
- 22. '方法'對象不可訂閱。不知道什麼是錯的
- 23. 複製一個不可變的對象有什麼意義?
- 24. 爲什麼Python中有不可變對象?
- 25. 爲什麼不可變對象需要雙指針?
- 26. 爲什麼不可變對象更適合分代GC?
- 27. 調用.copy()後,爲什麼我的request.post對象不可變?
- 28. glGetMatrix()是什麼對象(爲什麼不是glSetMatrix()呢?)?
- 29. 鎖定可變對象 - 爲什麼它被認爲是不好的做法?
- 30. 不可變對象優於靜態方法的優點是什麼?
通常無狀態的對象沒有狀態。不可變對象不能轉換到與它們創建的狀態不同的狀態,因此它們只有一個狀態。 – 2010-01-19 18:15:03