Java 在多个类之间同步是线程安全的吗
我有一个多线程程序。我有2个单件类,结构如下:Java 在多个类之间同步是线程安全的吗,java,multithreading,singleton,Java,Multithreading,Singleton,我有一个多线程程序。我有2个单件类,结构如下: public class A { public void synchronized method1() { B.getInstance().method2(); } } public class B { public void method2() { doSomething(); } } 类A和B都是单例的,method2不同步。我想知道method1是否是线程安全的?我的意思是当一个线程通过m
public class A {
public void synchronized method1() {
B.getInstance().method2();
}
}
public class B {
public void method2() {
doSomething();
}
}
类
A
和B
都是单例的,method2
不同步。我想知道method1
是否是线程安全的?我的意思是当一个线程通过method1
转到method2
时,其他线程是否可以进入method1
?如果一个线程进入method1
,然后进入method2
在第一个线程从method2
和method1
返回之前,其他线程都不能进入method1
但是请记住,多个线程可以同时执行method2
(尽管最多一个线程可以来自method1
)
那么,
method1
线程安全吗?是的,但前提是method2
也是线程安全的。类不添加任何内容。线程或线程安全。不同的类采用相同的方法;同一个类有不同的方法-它不会改变规则。那么规则是什么呢?它们是如何影响调用图的?那么你的意思是我应该在类B中标记method2 synchronized?这取决于method2
的作用,但这样你就有可能让一个线程进入method1
,然后必须等待其他线程完成执行method2
。也许可以。我不知道。