本帖最后由 九号球 于 2014-6-10 16:53 编辑
在毕老师关于生产消费者的代码中- public synchronized void out()
- {
- while(!flag)
- try{this.wait();}catch(InterruptedException e){}
- System.out.println(Thread.currentThread().getName()+"...消费者........"+this.name)
- flag = false;
- notifyAll();
- }
复制代码
当!flag为假的时候,线程等待,此线程停止在第4行位置,但是始终在加锁代码块中,所以这个线程从等待到被唤醒这一过程中,锁的持有者是怎么变化的呢?
如果是在等待时释放锁,被唤醒后重新抢夺控制权再持有锁。那么被唤醒的线程位置是代码第四行,他已经在被锁代码中了,这又怎么解释呢?
|
|