1.异常
1.出现异常后,如果不处理,那么程序直接 退出,jvm虚拟机直接退出
2.jvm虚拟机退出后,所有线程都会死亡,不管线程执行完没有
3.如果处理,try catch ,直到线程继续执行,知道线程的所有栈帧(方法)执行完
线程死亡,jvm回收这块栈空间
4.如果Throw 向上一个栈帧(方法)抛,那么上一个方法处理,如果一直抛到主栈帧,
主栈帧也不解决,那么一样,异常未被捕捉,程序退出,jvm虚拟机退出
5.异常被抛出后,那么产生异常的方法也结束,直到异常被捕捉,才会从被捕捉的那个
栈帧的下一句代码开始执行,简单来说向上thorws异常,栈帧结束被回收空间
程序终止
1.程序终止,代表jvm虚拟机退出,进程空间被回收
2.程序终止,所有线程死亡
3.程序终止的几种情况:
1.所有线程都死亡或者结束,没有线程去抢cpu资源了
2.异常未被捕捉
线程中断
1.线程中断,和程序终止有区别
2.线程中断,代表cpu在执行线程的过程中,有其他更紧急的线程需要处理,cpu放弃
当前线程,去执行那个紧急线程
3.线程中断后,线程处于的状态可能是,死亡,等待,具体看程序本身
线程的生命周期
1.线程说白了,就是那个栈空间的代码可以被cpu执行
2.当那个栈的所有代码执行完,线程也就死亡了
3.当然,栈的代码可能没执行完,线程也可能死亡,例如程序终止退出