Java 如果从同步方法内调用方法,则内部方法';s对共享可变数据的访问是否线程安全?

Java 如果从同步方法内调用方法,则内部方法';s对共享可变数据的访问是否线程安全?,java,multithreading,Java,Multithreading,我有一个顶级服务,它有一个方法a,它访问共享数据并声明为已同步。方法A反过来调用内部类的方法B,该类访问自己的一些共享数据 如果我可以保证B只从顶级服务的API调用,并且不公开,那么我还需要将B声明为已同步吗?或者A的同步声明是否足以确保B也是线程安全的 声明B同步是否也会造成性能损失?关键在于B不是从其他地方调用的。只要能保证这一点,你就没事 如果同时使B同步,则会有一点性能损失。是的,您会很好 syncronized(object) { do thing one; do th

我有一个顶级服务,它有一个方法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;
}

只要在对象上保持锁定,同步块内的所有内容都将是原子操作

能否请您提供一些代码以了解更多信息。如果您的数据是共享的,那么它将由多个线程访问。然后需要可见性。