跟大家分享一下今天看到的一个实例,代码如下:
start ()方法启动线程时,当前线程处于就绪状态,一旦发现CPU有空余时间处理线程时,才会执行run()方法,结果是两个线程同时运行,上图的执行结果让我查阅了下start()相关源码,截图如下:
在启动线程的时候会判断当前threadStatus!=0,也就是当前线程不是新建线程时执行以下代码;在finally代码块处理的时候还要注意一个ThreadGroup线程组的概念:多线程的多处理器系统,线程组的重要作用就是锁定策略,即尝试锁定一个级别尽可能多线程树,否则就从子线程到父线程锁定。线程启动时,判断当前启动状态是否为True,否则在线程组中移除该线程的关联树结构,这是代码执行结果的不同的原因。