+++
+++
一、
图一中,为什么a=0时,没有触发if判断?反应不过来?
二、
图二中,为什么最后触发中断,还会有线程执行一次?怎么避免?
+++
+++
一、
图一中,为什么a=0时,没有触发if判断?反应不过来?
二、
图二中,为什么最后触发中断,还会有线程执行一次?怎么避免?
(1)if (o == 0)这个操作不是原子性的,你又没有同步。
线程得到0的值为0,然后另一个线程正好改写了o,这样前一个得到的其实是脏数据
(2)你break只是不再创建新的线程了,但是不能让正在运行的线程停下来。
除非你向已经运行的线程发送interrupt,让它们自行退出或者被迫中止