看看这张图你就能理解了,当第一个线程执行着,突然cpu把资源分给第二个线程后,第二个线程的状态为Runing,第一个线程会进入Runable,从图可以看出Runable在start后面,也就是说线程的start只会启动一次,它里面的数据一直是start启动时的数据(但run方法里数据会随着变化而变化),cpu让线程暂停会让线程进入Runing状态。而不是从新开始,除非这个线程执行完了,或抛出异常了,那他就真的停止了,在开始就是从start开了。(你从显示的结果也能看出来,如果他从每次让出资源时后都从start开始的话,那么你会看到显示的数都是从100开始到一个数,然后后面又是从100开始,因为start开始就是从原始数据开始。你从结果看显然不是这种情况,他显示的数据都是依次从100到最后,好像这里面有个东西记录着执行到哪了,这说明没真正的停止而是进入Runing状态了,等第二个线程让出资源,然后他会在进入Runing状态)
|
|