工程师008
2016-09-02 12:12
如果energyBox[from] < amount 成立,那么当前线程会一直运行 lockObj.wait(),这样岂不是当前线程一直在运行着,无法结束了,一直耗着CPU资源?
既然理解成线程会阻塞,不会执行。当其他线程NotifyAll的时候,如果他获取资源,又会发生阻塞。那么这个线程会一直运行下去,不会消亡?(while条件一直成立)
在线程中调用了wait()方法后,线程就会进入阻塞,让出cpu资源来给其他线程运行了。你可以理解为Object的wait()和Thread的sleep()方法一样,只不过前者会先释放那个锁,而后者不会。
深入浅出Java多线程
186088 学习 · 464 问题
相似问题