目录
JUC概述
- JUC就是java.util.concurrent工具包的简称。
1.进程与线程
进程
指在系统中正在运行的一个应用程序;
程序一旦运行就是进程;
进程——资源分配的最小单位。
线程
系统分配处理器时间资源的基本单元,
或者说进程之内独立执行的一个单元执行流。
线程——程序执行的最小单位。
2.并发与并行
并发
同一时刻多个线程在访问同一个资源,多个线程对一个点。
例子:春运抢票、电商秒杀
并行
多项工作一起执行,之后再汇总
例子:泡方便面,电水壶烧水,一边撕调料倒入桶中
3.线程的6种状态
线程状态枚举类
Thread.State
新建:NEW
准备就绪:RUNNABLE
阻塞:BLOCKED
不见不散:WAITING
过时不侯:TIMED_WAITING
终结:TERMINATED
wait/sleep的区别
* sleep是Thread的静态方法, wait是Object的方法,任何对象实例都能调用。
* sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)。
* 它们都可以被interrupted方法中断。
4.管程
Monitor监视器
* 操作系统中称为监视器,Java中称为锁
* 一种同步机制,保证同一个时间,只有一个线程访问被保护数据或者代码
* jvm同步基于进入和退出的操作,使用管程对象实现的
5.用户线程和守护线程
用户线程
平时用到的普通线程,自定义线程
守护线程
运行在后台,是一种特殊的线程,比如垃圾回收
Lock 接口
1.Synchronized 关键字
synchronized 是 Java 中的关键字,是一种同步锁。
它修饰的对象有以下几种:
1.修饰一个代码块,被修饰的代码块称为同步语句块。
作用的范围:大括号{} 括起来的代码
作用的对象:调用这个代码块的对象
2.修饰一个方法