课程
/后端开发
/Java
/深入浅出Java多线程
在wait set中不满足条件的线程,被唤醒后是不是还是不满足条件?然后次线程又进入了wait set,还是说或重新获取随机参数
2017-04-04
源自:深入浅出Java多线程 4-4
正在回答
在这个代码中,一个线程是从EnergyTransferTask代码文件开始执行的,也就是说,这一个线程,每次被唤醒后都会重新执行EnergyTransferTask代码中的run,从而重新生成随机能量值,这样,就肯定有一种情况符合的,这样就会满足条件了,就是重新获取随机数。个人见解,有错请各位指出
当调用了wait方法后,线程是先释放掉了锁才进入了wait set的,当调用notify方法唤醒wait set里的线程后,线程获得cpu资源则会重新去获取锁,重新去判断条件,而不是处在之前没有满足条件的状态。
举报
带你一起深入浅出多线程,掌握基础,展望进阶路线
2 回答关于满足条件的线程等待问题
8 回答lockObj.notifyAll(); 说是唤醒所有在lockObj对象上等待的线程,energyBoxes[from] < amount那么肯定会出现有些线程这个条件不满足的啊,咋能唤醒全部线程呢?
2 回答如果用return,那么条件不满足时是怎么竞争资源的?
1 回答如果共享资源一直不满足线程的要求,线程不就会一直傻傻的等待
4 回答多线程唤醒问题