//A线程
synchronized(obj){
  obj.wait();
  dosomething....
}请问,A线程释放对象锁后,怎样才能重新获得对象锁?必须由另外线程调用notify()或者notifyAll()方法吗?

解决方案 »

  1.   

    如果被别的锁住了那必须有那个线程notify()
      

  2.   

    出代码块后,再次进入才能重新获得锁。比如notify
      

  3.   


    看问题,觉得你概念有点混乱啊。理一理:1:一个线程在运行到 synchronized(lockerObject) 的时候就会得到 lockerObject 的锁。
    2:lockerObject.wait() 的时候就会释放该对象上的锁。并等待。
    3:lockerObject.notify() 或 lockerObject.notifyAll() 与 lockerObject.wait 方法匹配使用。它唤醒在 lockerObject 上等待的线程,致使该线程可以继续运行。直到该线程又遇到了 synchronized(lockerObject) 语句,它便又一次得到了 lockerObject 上的锁。