我对这两个描述感到非常困惑:
- “wait方法阻塞调用线程并放弃监视器锁”
- “通知方法解除阻塞一个等待线程但不放弃监视器锁”
这是我的问题:
我知道Java中的每个对象都有一个锁,但是“监视器锁”是什么意思?它和对象的锁一样吗?
为什么 notify 方法需要放弃监听锁?
如果我尝试使用以下代码使对象等待:
class simpleTask extends Thread { int waitingTime; public simpleTask(int waitingTime) { this.waitingTime = waitingTime; } public void run() { synchronized(this) // this is a reference of current object { try { this.wait(waitingTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
和上面的第一个描述一样,是不是表示当前对象被synchronized关键字阻塞了,然后wait方法释放了锁?