sleep作用
这里加了sleep后,结果多次不是500,sleep在这里起到什么作用呢
这里加了sleep后,结果多次不是500,sleep在这里起到什么作用呢
2015-12-02
关于为什么不是500的次数变多了,一下是依据我对sleep()的理解产生的想法:
先说一下sleep():sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复。注意这里的恢复并不是恢复到执行的状态,而是恢复到等待池中等待CPU的宠幸。
下面开始解释为什么反而变多了:当你没有休眠0.1S的时候,线程们依次执行,就算有竞争也不会很激烈(因为部分线程执行完了就死掉了)。但是!答主让每个线程都休眠0.1S之后,这个时间让 更多的线程(我不敢保证是所有线程)累积到等待池中了,0.1S之后就是百家争鸣,竞争者的数量达到空前的高。冲突也就高,所以很容易让结果出错。
举报