【问题标题】:Regarding synchronized methods in Java关于Java中的同步方法
【发布时间】:2014-03-15 15:03:18
【问题描述】:

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

考虑一个具有 3 个synchronized 方法的类。

class MyClass{

    public synchronized void methodA(){ ... }

    public synchronized void methodB(){ ... }

    public synchronized void methodC(){ ... }

}

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

选项 1:

一个线程不可能在myObject 中运行any synchronized 方法,而另一个线程在myObject 中运行any同步方法。

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

选项 2:

线程不可能在myObject 中运行特定的synchronized 方法,而该特定方法 正在由另一个线程运行。

例如,当线程 1 正在运行实例 myObjectmethodA() 时,线程 2 无法运行方法 methodA(),但 可以 运行 methodB()methodC() . (意思是,三个同步方法没有“连接”)。

【问题讨论】:

标签: java multithreading synchronization


【解决方案1】:

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

【讨论】:

  • 那么当线程1在特定实例中运行methodA()时,线程2就不能运行methodA(),不能运行methodB(),也不能运行methodC()?跨度>
  • 谢谢 :) 7 分钟后将接受答案
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多