当前位置:嗨网首页>书籍在线阅读

06-结果分析

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

结果分析

下图是程序在控制台的输出,从中可以看到,线程正在并行处理各自的工作。

7.png 从下面的屏幕截图中可以看到线程是如何创建的,拥有高优先级的偶数编号线程比低优先级的奇数编号线程优先执行。该截图来自记录线程状态的 log.txt 文件。

8.png 每个Java应用程序都至少有一个执行线程。在程序启动时,JVM会自动创建执行线程运行程序的 main() 方法。

当调用 Thread 对象的 start() 方法时,JVM才会创建一个执行线程。也就是说,每个 Thread 对象的 start() 方法被调用时,才会创建开始执行的线程。

Thread 类的属性存储了线程所有的信息。操作系统调度执行器根据线程的优先级,在某个时刻选择一个线程使用CPU,并且根据线程的具体情况来实现线程的状态。

如果没有指定线程的名字,那么JVM会自动按照 Thread - XX 格式为线程命名,其中 XX 是一个数字。线程的ID和状态是不可修改的,事实上, Thread 类也没有实现 setId()setStatus() 方法,因为它们会引入对ID和状态的修改。

一个Java程序将在所有线程完成[1]后结束。初始线程(执行 main() 方法的线程)完成,其他线程仍会继续执行直到完成。如果一个线程调用 System.exit()命 令去结束程序,那么所有线程将会终止各自的运行。

创建一个 Thread 对象并不意味着会创建一个新的执行线程。同样,调用实现 Runnable 接口类的 run() 方法也不会创建新的执行线程。只有调用了 start() 方法,一个新的执行线程才会真正创建。