关键点在于 while(true),楼主也说明了,这个卡机现象是打印完之后出现的。是因为在打印完之前Thread.sleep(10);} CPU还有不到10ms的休息时间,等打印完成之后,tick不再>0, 因此就连几ms的休息时间也没有啦。 因为死循环的存在,4个线程一直在不停歇的耗费CPU资源,没有休息时间。因此CPU基本上会100%占用,好点的双核或者四核机器还好,差点的机器就会出现问题啦。
用了synchronized后 几个线程都正常,其实也只是一种假象,打印完之后4个线程依然存在,只是因为锁的存在而情况好一点。 |
|