JAVA多线程JUC:线程、进程、主线程、守护线程、用户线程概念梳理
JUC是java.util.cuncurrent工具包的简称(JDK1.5开始出现的)
进程 | 线程 |
---|---|
是计算机中程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的最小单位 | 是操作系统能够进行运算调度的最小单位包含在进程之中,是进程中的实际运算单位 |
资源分配最小单位 | 程序执行的最小单元 |
打开某个软件就是一个进程 | 打开某个软件的具体某个功能块 |
并发 | 并行 |
---|---|
同一时刻多个线程访问同一个资源 多个对一个 | 多份工作同时一起执行,之后在汇总 |
例如秒杀系统 抢票系统 | 一边听歌、一边吃饭 |
对线程简单分类划分为:
主线程 (每一个进程只有一个主线程)
子线程
主线程: main方法
子线程:非主线程皆是子线程
子线程简单划分为:
守护线程 | 非守护线程,即用户线程 |
---|---|
进程中,为主线程提供一种通用服务的线程。 | 一般异步处理一些业务或逻辑xml |
注:主线程一旦结束或者销毁,守护线程没有了守护对象,也将同步进行结束或销毁。
守护线程与用户线程的关系:
用户线程在start以前能够经过setDaemo(true)来转变为守护线程。
若是在start以后调用setDaemo(true),将会throw IllegalThreadStateException