问答详情
源自:4-4 Java线程交互之深入剖析互斥与同步

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

synchronized(lockObj){

 

// if (energyBoxes[from] < amount)

// return;

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

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

while (energyBoxes[from] < amount){

try {

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

lockObj.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

 


提问者:linbingfeng 2016-04-05 23:01

个回答

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

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

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

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