我有一个关于Java中方法同步的问题。
考虑一个包含3个synchronized
方法的类。
class MyClass{
public synchronized void methodA(){ ... }
public synchronized void methodB(){ ... }
public synchronized void methodC(){ ... }
}
考虑myObject
,myClass
的一个实例。 以下哪项是正确的?
选项1:
线程无法在synchronized
中运行任何 myObject
方法,而另一个线程正在运行任何同步myObject
中的方法。
例如,当线程1运行methodA()
实例myObject
时,线程2无法运行任何方法methodA()
, methodB()
和methodC()
。
选项2:
线程无法在synchronized
中运行特定myObject
方法,而特定方法正由另一个线程运行。
例如,当线程1运行methodA()
实例myObject
时,线程2无法运行方法methodA()
,但可以运行methodB()
或methodC()
。 (意思是,三个同步的方法都没有连接')。
答案 0 :(得分:3)
第一个选项是true,因为基本上有一个锁用于所有方法。