我有一个关于Java中方法同步的问题.
考虑一个具有3个同步方法的类.
class MyClass{
public synchronized void methodA(){ ... }
public synchronized void methodB(){ ... }
public synchronized void methodC(){ ... }
}
考虑myObject,myClass的一个实例.以下内容哪些是对的?
选项1:
线程不可能在myObject中运行任何同步方法,而另一个线程在myObject中运行任何同步方法.
例如,当线程1运行实例myObject的methodA()时,线程2不能运行任何方法methodA(),methodB()和methodC().
选项2:
线程不可能在myObject中运行特定的同步方法,而该特定方法由另一个线程运行.
例如,当线程1运行实例myObject的methodA()时,线程2不能运行方法methodA(),但可以运行methodB()或methodC(). (意思是,三个同步方法没有“连接”).
解决方法:
第一个选项是正确的,因为基本上有一个锁用于所有方法.