作业 重新设置中断状态
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
//重新设置中断状态
Thread.currentThread().interrupt();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
//重新设置中断状态
Thread.currentThread().interrupt();
}
2019-11-13
1.一个线程进入synchronized块,锁住本方法
2.判断energyBoxes[from]能量不够转移的话就wait()进入等待池同时释放锁
3.其他线程执行完毕后,如果本线程刚好拿到锁,就从wait()下一条语句执行,也就是while()判断。(这也是我同事给我讲了好久才反应过来的,用if下一次就不判断了)。这时候energyBoxes[from]的值有可能被其他线程修改了,也就是说不一定满足条件了
4.如果还是进入while,那就继续执行3;否则跳出循环,执行后面语句。
2.判断energyBoxes[from]能量不够转移的话就wait()进入等待池同时释放锁
3.其他线程执行完毕后,如果本线程刚好拿到锁,就从wait()下一条语句执行,也就是while()判断。(这也是我同事给我讲了好久才反应过来的,用if下一次就不判断了)。这时候energyBoxes[from]的值有可能被其他线程修改了,也就是说不一定满足条件了
4.如果还是进入while,那就继续执行3;否则跳出循环,执行后面语句。
2019-10-10