Java并发篇
其他
2021-11-30 07:25:42
阅读次数: 0
进程 & 线程
操作系统进行资源分配的最小单元
操作系统任务分配的最小单元
线程安全如何保证
加锁
Volatile & Synchroniaed
- Volatile:保证变量的线程可见性,通常适用于一个线程写,多个线程读的情况
- Synchroniaed 用来加锁
- Volatile:不具备原子性,禁止指令重排
Java的线程锁机制
- Java 的锁就是在对象的MarkWord 中记录一个锁状态,无锁,偏向锁,轻量级锁,重量级锁对应不同的锁状态
- Java的锁机制,就是根据资源的竞争程度不断进行锁升级的过程
AQS
- AQS 是一个Java 线程同步的框架,是JDK中很多锁框架的核心实现框架
- 在AQS中,维护了一个信号量 state,和一个线程组成的双向链表队列,其中,这个线程队列,就是用来给线程排队的,而state就像是一个信号灯,用来控制线程排队或放行,在不同的场景下,有不同的意义
AQS实现可重入锁
- 在可重入锁的场景下,state就表示加锁的次数,0标识无锁,每加一次锁,stats就加1,每释放一次锁,state就减1
并发工具
- CountDownLatch 线程同步执行
- CylicBarrier 线程依次执行
- Seamphore 线程交替执行
ForkJoin
转载自blog.csdn.net/weixin_44971379/article/details/121595231