![](/img/trans.png)
[英]Why is this code not thread-safe, even when using a synchronized method?
[英]If a method is called from within a synchronized method, is the inner method's access to shared mutable data thread-safe?
我有一個具有方法A的頂級服務,該方法訪問共享數據並聲明為同步。 方法A依次調用內部類的方法B,該類訪問其自身的某些共享數據。
如果我可以保證B僅從頂級服務的API中調用,並且不會公開公開,我是否仍需要將B聲明為已同步? 還是A的同步聲明足以確保B也是線程安全的?
聲明B同步也有性能損失嗎?
關鍵確實是不能從其他地方調用B。 只要確保這一點,就可以了。
如果同時使B同步,則性能損失很小。
是的,你會沒事的。
syncronized(object) {
do thing one;
do thing two;
}
是相同的
syncronized(object) {
doSomething();
}
void doSomething() {
do thing one;
do thing two;
}
只要在對象上持有鎖,同步塊內部的所有內容都是原子操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.