HUNO焜
2014-12-23 16:57
这里我假设 线程A 的energyBoxes[from]=50,amount=100,因为50<100,所以肯定会调用wait()方法,当 线程A 被其他线程唤醒后,energyBoxes[from]的值还是50,amount的值还是100吗?如果是,那就是说,线程A会一直卡在这段代码中,不能往下运行的意思吗?
另外我想问,当线程被唤醒后,线程是从while (energyBoxes[from] < amount) 这段代码开始运行吗 ?
你得理解是正确的,这就是为什么使用了一个while循环来阻挡不符合条件的操作。
每次被唤醒并获得锁后,都是从wait之后的地方继续循环。
深入浅出Java多线程
186088 学习 · 464 问题
相似问题