基本概念
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
一些问题
1、为什么线程挂掉进程就一定会挂掉呢?
浏览了不少博客和解答,收集到两个重要的信息。
首先是一份代码验证:
线程崩溃是否会造成进程崩溃? - jameswhale的回答 - 知乎
https://www.zhihu.com/question/22397613/answer/1001161796
对C++代码来讲,如果线程崩溃了,进程就会跟随异常退出。三次异常分别为: throw异常未进行捕获,访问非法地址,除0(未引发进程异常,根据评论,应该是编译器优化了)。
其次是一句普普通通的解释:
“崩溃不崩溃要是是不是把数据写脏。一般崩溃肯定伴随栈溢出、读取或者访问了非法地址。”
结合上述,线程共享进程的内存空间,虽然有自己独立的栈,但是同一个进程中的线程是可以互相访问彼此的栈的,如果某个线程发生了崩溃(栈溢出、访问异常等),就会影响到其他线程,因此整个进程就会崩溃。
java为什么不会呢?小编把这个问题交给大家XD
2、还没想到其他问题。