【发布时间】:2014-03-15 15:03:18
【问题描述】:
我有一个关于 Java 中方法同步的问题。
考虑一个具有 3 个synchronized 方法的类。
class MyClass{
public synchronized void methodA(){ ... }
public synchronized void methodB(){ ... }
public synchronized void methodC(){ ... }
}
考虑myObject,myClass 的一个实例。 下列哪项是正确的?
选项 1:
一个线程不可能在myObject 中运行any synchronized 方法,而另一个线程在myObject 中运行any同步方法。
例如,当线程 1 正在运行实例 myObject 的 methodA() 时,线程 2 无法运行 任何 方法 methodA()、methodB() 和 methodC()。
选项 2:
线程不可能在myObject 中运行特定的synchronized 方法,而该特定方法 正在由另一个线程运行。
例如,当线程 1 正在运行实例 myObject 的 methodA() 时,线程 2 无法运行方法 methodA(),但 可以 运行 methodB() 或 methodC() . (意思是,三个同步方法没有“连接”)。
【问题讨论】:
-
+1 这个好问题
标签: java multithreading synchronization