关于Java中的同步方法

我有一个关于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(). (意思是,三个同步方法没有“连接”).

解决方法:

第一个选项是正确的,因为基本上有一个锁用于所有方法.

上一篇:java – 巨大数据模型中的线程安全性


下一篇:C#One Writer很多读者都读过一次