java - 如何在使用其中一个时锁定类的所有方法?

标签 java multithreading

我不明白如何用 Java 做这件事:

例如,我有 Foo.class:

public class Foo{
  public Foo(){}

  public void method1(){
    ...
  }

  public void method2(){
    ...
  }

}

我有不同的线程和它们自己的 Foo 类对象:

Thread 1: Foo foo1 = new Foo();
Thread 2: Foo foo2 = new Foo();

例如线程 1 调用:foo1.method1() 同时线程 2 调用:foo2.method2()

如何在线程 1 中的 foo1.method1() 未完成之前阻止线程 2 的调用?

提前致谢!

最佳答案

你需要一些东西来同步,你可以使用很多东西,但我会添加一个类字段(一个由所有实例共享的字段 - 也称为 static 字段)并使用它。有点像

public class Foo{
  static final Object ai = new Object(); // <-- one to rule them all...
  public Foo(){}

  public void method1(){
    synchronized(ai) {
      // ...
    }
  }

  public void method2(){
    synchronized(ai) {
      // ...
    }
  }
}

关于java - 如何在使用其中一个时锁定类的所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745263/

相关文章:

c - 没有互斥量的 pthread_cond_wait 的潜在缺陷

java - 一旦在cassandra java中批量插入一些数据,cassandra pelops异常 "socket write error"

java - DatagramSocket能否接收多播数据包

java - 如何使用sql提取源表?

multithreading - jmeter 如何模拟比我在 cpu 中的实际线程数更多的线程(用户)?

android线程管理onPause

java - 异常输出未按顺序出现

java - 通用数组列表

c# - 有一个待处理的异步操作,并且只能同时处理一个异步操作

c - 使用 POSIX QUEUE 完成后该怎么做