JUC就是 java.util.concurrent 下面的类包,专门用于多线程的开发。
充分利用多核CPU的计算能力
多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。
方便进行业务拆分,提升系统并发能力和性能
现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。
频繁的上下文切换
任务从保存到再加载就是一次上下文切换,而每次切换时,需要保存当前的状态,以便能够进行恢复先前的状态,而这个切换时非常损耗性能,过于频繁反而无法发挥出多线程编程的优势
线程安全问题
多线程编程中最难以把握的就是临界区线程安全问题,稍微不注意就会出现死锁的情况,一旦产生死锁就会造成系统功能不可用
阻塞与非阻塞的重点在于 线程等待消息时候的行为 ,也就是在等待消息的时候,当前线程是挂起状态,还是非挂起状态。
线程轮流使用cpu的做法称为并发

多个cpu下,每个核都可以调度运行线程,这时候线程可以是并行的
进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士)等
public enum State {
//运行
NEW,
//运行
RUNNABLE,
//阻塞
BLOCKED,
//等待
WAITING,
//超时等待
TIMED_WAITING,
//终止
TERMINATED;
}