我不明白如何用 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/