关于WaitSet 问题

来源:4-3 Java线程交互之互斥与同步:守恒的能量

工程师008

2016-09-02 12:12

如果energyBox[from] < amount 成立,那么当前线程会一直运行 lockObj.wait(),这样岂不是当前线程一直在运行着,无法结束了,一直耗着CPU资源?

写回答 关注

2回答

  • 工程师008
    2016-09-02 20:20:18

    既然理解成线程会阻塞,不会执行。当其他线程NotifyAll的时候,如果他获取资源,又会发生阻塞。那么这个线程会一直运行下去,不会消亡?(while条件一直成立)

    共 1 条回复 >

  • luomu24
    2016-09-02 16:52:56

    在线程中调用了wait()方法后,线程就会进入阻塞,让出cpu资源来给其他线程运行了。你可以理解为Object的wait()和Thread的sleep()方法一样,只不过前者会先释放那个锁,而后者不会。

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题