1、JUC概述
2024/12/19大约 2 分钟
1、JUC概述
1、JUC是什么
java.util.concurrent在并发编程中使用的工具包,自jdk1.5开始出现该工具包
2、线程和进程的概念
1、进程是什么
进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础(即打开软件所占用的空间)
2、线程是什么
线程是操作系统能够进行运算调度的最小单位,他被包含在进程中。(进程之内独立执行的一个单元执行流),是程序执行的最小单元
3、线程的状态
1、* 线程状态中的枚举类 Thread.State
public enum State {
NEW, //新建
RUNNABLE, //准备就绪
BLOCKED, //阻塞
WAITING, //不见不散,等待,持续等待
TIMED_WAITING, //过时不候,等待
TERMINATED; //终结(terminated)
}
2、* wait/sleep方法的区别
1、sleep方法是Thread类中的方法,wait是Object类中的方法
2、sleep不会释放锁,wait会释放锁,但调用它的前提是当前线程占有锁,即代码在synchronied中
3、它们都可以被interrupted方法中断
4、并发和并行
并发:同一时刻多个线程在访问同一个子隐患,多线程对一个点,例如:春运抢票,电商秒杀
并行:多项工作一起执行,之后在汇总,例如:泡方便面,水壶烧水,一边撕调料倒入桶中
5、管程对象(Monitor)/ 锁
操作系统中叫监视器,java中叫做锁,是一种同步机制,保证同一时间,只有一个线程访问被保护的数据或代码
java同步基于进入和退出,使用管程对象实现,即程序执行时创建一个锁(管程对象),程序执行结束,释放该管程对象
6、用户线程和守护线程
用户线程: 平时自定义的thread都是用户线程
守护线程: 例如垃圾回收在后台默默执行的线程是守护线程
区别: 如果用户线程执行没有结束,则jvm不会停止(jvm存活),如果守护线程执行没有结果,但是用户线程结束了,jvm停止