关于Java中的同步方法

时间:2014-03-15 15:03:18

标签: java multithreading synchronization

我有一个关于Java中方法同步的问题。

考虑一个包含3个synchronized方法的类。

class MyClass{

    public synchronized void methodA(){ ... }

    public synchronized void methodB(){ ... }

    public synchronized void methodC(){ ... }

}

考虑myObjectmyClass的一个实例。 以下哪项是正确的?

选项1:

线程无法在synchronized中运行任何 myObject方法,而另一个线程正在运行任何同步myObject中的方法。

例如,当线程1运行methodA()实例myObject时,线程2无法运行任何方法methodA()methodB()methodC()

选项2:

线程无法在synchronized中运行特定myObject方法,而特定方法正由另一个线程运行。

例如,当线程1运行methodA()实例myObject时,线程2无法运行方法methodA(),但可以运行methodB()methodC()。 (意思是,三个同步的方法都没有连接')。

1 个答案:

答案 0 :(得分:3)

第一个选项是true,因为基本上有一个锁用于所有方法。