将方法与同一类的两个实例同步

时间:2016-02-25 23:59:06

标签: java synchronization threadpool

在这里,我试图使用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  
 }

0 个答案:

没有答案