簡體   English   中英

如果從同步方法中調用方法,則內部方法對共享的可變數據的訪問線程安全嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM