在这里,我试图使用Obj类创建Obj的多个实例,然后尝试在名为sync的类中访问justOne方法。但是,我不希望其中两个对象能够同时访问该方法。
我认为通过将synchronized
添加到我的justOne方法中,我会阻止多个实例同时访问该方法,但我得到的是IllegalMonitorStateException
。
如何更改我的代码,以便只有一个Obj实例可以一次访问justOne?
这是我的Obj课程:
public class Obj implements Runnable {
public Sync sync;
public void run() {
sync.justOne(this);
}
}
这是我的justOne方法:
public synchronized void justOne(Obj o) {
while(!condition) {
try {
o.wait();
} catch (InterruptedException e) {}
}
// Do something with o
}