下面的代码进入wait之后,再次被唤醒,会不会有一定几率导致程序发生死锁?

来源:4-4 Java线程交互之深入剖析互斥与同步

linbingfeng

2016-04-05 23:01

synchronized(lockObj){

 

// if (energyBoxes[from] < amount)

// return;

//while循环,保证条件不满足时任务都会被条件阻挡

//而不是继续竞争CPU资源

while (energyBoxes[from] < amount){

try {

//条件不满足, 将当前线程放入Wait Set

lockObj.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

 


写回答 关注

2回答

  • elec_Russell
    2016-09-02 12:30:02

    不会,在老师的例子中设置了单次转移能量的上限等于初始能量,因此至少有一条线程可以满足条件

    慕粉4279...

    正解~~

    2016-12-03 06:05:55

    共 1 条回复 >

  • dwzone
    2016-04-07 17:03:22

    会,如果所有的线程都进入wait set中,那么所有的线程都在等待。

深入浅出Java多线程

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

186071 学习 · 498 问题

查看课程

相似问题