java - java中的方法同步

标签 java

在编写java同步代码时,静态和非静态java同步方法如何并行运行?

public class Counter{

   private static count = 0;

   public static synchronized  getCount()
   {
      return this.count;
   }

   public synchronized setCount(int count)
   {
      this.count = count;
   }
}

最佳答案

静态方法在类对象上同步,而非静态方法在调用它们的类的特定实例上同步。因此它们可以并行执行,因为它们通常在不同的对象上同步。

在以下示例中,staticMethod1 本质上与 staticMethod2 相同,而 method1 仅与 method2 相同后面的版本使用它们显式同步的对象:

class MyClass
{
    static synchronized void staticMethod1()
    {
        doSomething();
    }

    static void staticMethod2()
    {
        synchronized( MyClass.class )
        {
            doSomething();
        }
    }

    synchronized void method1()
    {
        doSomething();
    }

    void method2()
    {
        synchronized( this )
        {
            doSomething();
        }
    }
}

关于java - java中的方法同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8213167/

相关文章:

java - 在java中解码编码字符串?

java - java 对象的通用导出到 Excel

java - 尽管设置了属性,但 AppCompat 工具栏标高缺失(使用 RecyclerView)

java - 如何撤消正则表达式执行的替换?

java.lang.Process.waitFor() 挂起

java - 如何创建分布式java服务器

java - 为什么 Spring AOP 不在运行时编织外部 jar?

java - 需要一种更好的方法来查找字符串中的重复单词

java - ANDROID:在 SQLite 数据库中搜索具有 3 列且值相等的行

java - Jasper 报告中缺少图像