大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。
本文主要介绍了线程生命周期,希望能对学习线程的同学们有所帮助。
一个jar包可以叫做程序,当在命令行输入java -jar xxx.jar
时,运行了程序,启动了进程。一个java程序一般来讲至少存在三个线程:main()主线程,gc()垃圾回收线程,异常处理线程。在java中public static void main()
里的代码被称为主线程代码,主线程代码里还可以显性(开发人员写代码的方式)创建多个子线程以及孙线程,子线程/孙线程发生异常不一定会影响主线程。垃圾回收线程、异常处理线程不在主线程下显性写明,是由系统/Java虚拟机(具体是什么不确定,但肯定不是开发人员)帮我们起的,一旦发生异常都会影响主线程。
一般情况下,即不做特别声明,父线程与子线程相互不影响,即子线程结束,父线程不一定结束;父线程结束,子线程不一定结束;父线程异常,子线程不一定异常