当一个线程调用了某个对象的notifyAll()方法之后,只有也只可能使该对象锁池内的某一个线程,真正获得该对象的锁,从而有机会执行,但是
同时被唤醒的其他线程此时处于何种状态,它们怎样才能获得该对象的锁?谢谢!

解决方案 »

  1.   

    因等待对象同步锁而被阻塞的所有线程都会得到 notifyAll() 的通知而重新切换到可运行状态,此时它们互相竞争着获取此对象的同步锁,抢到同步锁的会继续执行,而没抢到的会因此对象同步锁已被取走而再次进入阻塞状态。
      

  2.   

     想得让某个对象得到锁 就直接调用notify()方法就行了
      

  3.   

    得到notifyAll()方法通知的所有线程(处于该对象锁池内)被唤醒等待处理机分配资源,他们之间相互竞争,只有获得此对象锁的那个线程才会开始执行,其他的被阻塞掉,
      

  4.   

    notifyAll = 通知所有正在阻塞的对象,不一定谁获得下一个进入可以运行状态。