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
最新回答 / qq_慕圣2566072
代码中用了yield的方法,该方法与sleep()类似,只是不能由用户指定暂停多长时间,并且yield()方法只能让同优先级的线程有执行的机会。但是不确定暂停时间
2019-06-19
最新回答 / tiger爱小狄
你问的是哪两个结果呢?视频中应该是三个结果 1.intterrupt未中断线程运行 2.interrupt中断了线程运行 3.抛出异常,未中断线程运行
2019-06-18