有人问我这个问题,我找不到解决方案,我有一个类 A
,方法是 a1
和 a2
:
A 类 {a1() a2()}
:
和一个类 B
,方法为 b1
和 b2
:
B 类 {b1() b2()}
考虑到多线程环境,我想在调用 a1 时停止执行 b1,同样适用于 b2 和 a2。这两个对象都是独立的。这可能吗?
最佳答案
public class A {
private final Object lock;
public A(Object lock) {
this.lock = lock;
}
public void a1() {
synchronized(lock) {
...
}
}
}
public class B {
private final Object lock;
public B(Object lock) {
this.lock = lock;
}
public void b1() {
synchronized(lock) {
...
}
}
}
现在如果你构造一个 A 和一个 B 并向它们传递相同的锁对象,这两个对象的 a1()
和 b1()
方法将相互独家:
Object lock = new Object();
A a = new A(lock);
B b = new B(lock);
如果你想让a2()
和b2()
互斥,那么再传一个锁对象,让这两个方法在这个锁对象上同步。
关于java - 限制其他类方法的方法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140619/