未完更新中。。。
- WWH???
- JUC概述
- 1.进程与线程
- 2.并发与并行
- 3.线程的6种状态
- 4.管程
- 5.用户线程和守护线程
- Lock 接口
- 1.Synchronized 关键字
- 2.Lock 接口
- 3.Lock 和 synchronized 的不同
- 线程间通信
- 线程间定制化通信
- 集合的线程安全
- 多线程锁
- Callable 接口
- JUC 三大辅助类
- ReentrantReadWriteLock读写锁
- BlockingQueue阻塞队列
- ThreadPool 线程池
- Fork/Join 分支合并框架
- CompletableFuture 异步回调
JUC是什么?
为什么要用?
学了会怎么样?
- JUC就是java.util.concurrent工具包的简称。
进程
指在系统中正在运行的一个应用程序; 程序一旦运行就是进程;
进程——资源分配的最小单位。
线程
系统分配处理器时间资源的基本单元, 或者说进程之内独立执行的一个单元执行流。
线程——程序执行的最小单位。
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.用户线程和守护线程
用户线程
平时用到的普通线程,自定义线程
守护线程
运行在后台,是一种特殊的线程,比如垃圾回收
深入了解 JUC概述 链接
Lock 接口 1.Synchronized 关键字synchronized 是 Java 中的关键字,是一种同步锁。
它修饰的对象有以下几种:
1.修饰一个代码块,被修饰的代码块称为同步语句块。
作用的范围:大括号{} 括起来的代码
作用的对象:调用这个代码块的对象
2.修饰一个方法,被修饰的方法称为同步方法。
作用的范围:整个方法
作用的对象:调用这个方法的对象
3.修饰一个静态的方法。
作用的范围:整个静态方法
作用的对象:这个类的所有对象
4.修饰一个类。
作用的范围:synchronized后面括号括起来的部分
作用的对象:这个类的所有对象
2.Lock 接口
Lock 锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作。
- ReentrantLock 可重入锁,是唯一实现了 Lock 接口的类
- ReadWriteLock 只定义了两个方法。
- Lock readLock(); //获取读锁
- Lock writeLock(); //获取写锁
- ReentrantReadWriteLock 实现了 ReadWriteLock 接口
- 最主要的有两个方法:readLock()和 writeLock()用来获取读锁和写锁
- Lock是一个接口,而synchronized是Java中的关键字,synchronized是内 置的语言实现;
- synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而 Lock 在发生异常时,如果没有主动通过 unLock()去释放锁,则很可能造成死锁现象,因此使用 Lock 时需要在 finally 块中释放锁;
- Lock可以让等待锁的线程响应中断,而synchronized却不行,使用 synchronized 时,等待的线程会一直等待下去,不能够响应中断;
- 通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
- Lock可以提高多个线程进行读操作的效率。
在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时, Lock 的性能要远远优于 synchronized。
深入了解 Lock接口 链接
线程间通信线程间通信的模型有两种:共享内存和消息传递,
线程间通信案例Demo 链接
CountDownLatch CyclicBarrier Semaphore
深入了解 JUC三大辅助类 链接
ReentrantReadWriteLock读写锁 BlockingQueue阻塞队列 ThreadPool 线程池 Fork/Join 分支合并框架 CompletableFuture 异步回调


