如果我調用一個同步的對象,我可以訪問該對象內的對象,就好像它們是同步的嗎?或者我只能訪問數據類型?同步會影響對象成員嗎?
1
A
回答
0
可能,但只有小心。如果您始終鎖定同一個對象,則可以執行此操作。
很有可能你必須鎖定每個對象。
1
儘管您的目標是保護數據,但同步提供了圍繞代碼塊的獨佔性,而不是一塊數據。代碼在同步塊之外(或者在使用不同對象的塊中),可能會改變您嘗試保護的數據,即使這不是您想要的。
任何正確的鎖定策略都必須確保可能相互干擾的代碼塊保持相同的鎖定。這包括可能會干擾在另一個線程中運行的另一個副本的代碼。
synchronized (myObject) {
// sensitive code
}
在方法級鎖定只是用於鎖定this
指針的方法的主體中的簡寫。 (或靜態方法的class
對象)。
0
對每個對象的synchronize
的能力在Java中是一個常見的煩惱,因爲它很混亂。
基本上,它意味着每個對象都可以是一個鎖。而已。因此,當您鎖定父對象時,對象的成員沒有特殊效果,並且將哪個特定對象用作鎖。如果所有線程都鎖定在同一個對象上,則只有其中一個線程將運行/訪問同步塊中的任何代碼。如果其中一些不這樣做,那麼就沒有這種保證。
如果要確保在任何給定時間只有一個線程正在訪問成員,請確保訪問該成員的所有線程在訪問同一對象之前都鎖定(或「同步」)。只要你這樣做,鎖使用哪個對象並不重要。
相關問題
- 1. 同步類對象會阻塞整個類(及其成員)
- 2. SQLAlchemy:2會話對象的影響?
- 3. 同步訪問ASP.NET會話的成員
- 4. 靜態方法會影響php對象的大小嗎?
- 5. 對象鎖實例成員來同步對它的訪問
- 6. NSClassFromString會影響性能嗎?
- 7. Thread.Sleep會影響ThreadPool嗎?
- 8. SO_RCVTIMEO會影響accept()嗎?
- 9. Thread.Sleep會影響ThreadState嗎?
- 10. 原型鏈 - 一個對象上的設置鍵會影響同級對象?
- 11. 更改一個對象應該會影響同一類的其他對象
- 12. 同步對象與未同步對象
- 13. FileStream.ReadAsync有時會同步完成嗎?
- 14. 長而複雜的模板成員方法會影響性能嗎?
- 15. DOCTYPE對CSS有影響嗎?
- 16. 合併複製客戶端上的時間不同步會影響嗎?
- 17. 異步/等待會影響tcp服務器的性能嗎?
- 18. 改變WritableRaster對象影響BufferedImage對象
- 19. 成員類對象有衝突嗎?
- 20. 類成員函數編號的影響
- 21. 匿名內部類不會影響外部類成員
- 22. 對象同步
- 23. 同步對象
- 24. 對象同步
- 25. 同步對象
- 26. 在Java中向抽象基類添加成員的影響
- 27. 同步鎖定結果集對象嗎?
- 28. 「同步訪問線程」與「同步共享對象」相反嗎?
- 29. 虛擬對類模板成員使用的影響
- 30. 如何異步編程影響對象的屬性
你的問題非常模糊 - 你說的「調用同步對象」是什麼意思?如果你想給出一個特定的代碼示例,這真的很有幫助。 – 2013-05-04 07:37:53