一 juc基本常识
1.1 JUC概念
juc 是java util concurrent 工具包的简写。
1.2 进程和线程
进程:正在运行执行任务的一个程序,是系统进行资源分配和调度的基本单位。从集合的角度来说,进程是线程的容器。
线程:它被包含在进程中,是进程中真正执行任务的最小单位,一个进程中可以有多个并发的线程,每天线程执行不同的任务。
1.3 线程的状态
-
new 新建态; 2.就绪 runnable 3.运行态 running 4.blocked阻塞态 5.消亡态 stop terminal
1.4 wait和sleep的区别和联系
1.sleep是thread类的静态方法;wait是object的方法,可以被任何实例对象进行调用。
-
sleep它也不需要占用锁(即sleep不需要写到sychronized修饰的代码中),也不会释放锁;wait会且必须当前线程占有锁(即wait需要写到sychronized修饰的代码中),会释放锁。
相同点: 它们都可以被interrupt方法中断。
1.5 并发和并行
并发:同一时刻多个线程任务在执行任务。
并行:同一时间段内,多个线程在执行任务。
1.6 管程
保证了同一时刻只有一个进程在管程内活动,即管程内定义的操作在同一时刻只被一个进程调用(由编译器实现)。
用户线程:自定义线程; 守护线程:比如说垃圾回收线程。
用户线程:当任何一个用户线程未结束,Java虚拟机是不会结束的。
守护线程:如果只剩守护线程未结束,Java虚拟机结束。