求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响

求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响图片说明图片说明

你不加锁可能多个线程对它减一 就会出现负数

休眠sleep 2.0s期间 并行线程对number 继续进行减操作,延迟2s后才会走出if 判断这时候 已经减了很多次.

不枷锁的情况下 , 你又把线程写在for循环中, 各个线程都相互独立,在后面程序还没执行 -- 的操作的时候, 前面sleep的程序执行了 -- , 这时候, 后面的循环次数的sleep结束, 再执行时, 这时候number就会一直减下去,这样就出现负数了。