内容:
1.并发工具:
-
线程池:Excutor
-
各种锁:悲观锁、乐观锁、共享锁、公平锁、可重入锁、自旋锁
-
原子类:atomic包
-
并发容器:ConcurrentHashMap、CopyOnWriteArrayList、各种阻塞队列
2.两种战略:
3.两大原理:
CAS原理
AQS框架
4.一种领导力
并发流程控制能力
并发工具分类:
1.为了并发安全;
为了线程安全(底层原理)
-
互斥同步:
使用各种互斥同步的锁
synchronize
ReentrantLock(可重入锁)
ReadWriteLock(读写锁)
。。。
使用同步的工具类(比较少用,性能较差)
Collections.synchronizedList(new ArrayList())等
Vector等
-
非互斥同步:如:atomic包,原子类
Atomic*基本类型原子类
-
AtomicInteger:整形原子类
-
AtomicLong:长整形原子类
-
AtomicBoolean:布尔型原子类
Atomic*Array数组类型原子类(数组里的元素也保证原子性)
-
AtomicIntegerArray:整形数组原子类
-
AtomicLongArray:长整形数组原子类
-
AtomicReferenceArray:引用类型数组原子类
Atomic*Reference引用类型原子类
-
AtomicReference:引用类型原子类
-
AtomicStampedReference:引用类型原子的升级,带时间戳,可以解决ABA问题
-
AtomicMarkableReference
Atomic*FieldUpdater升级原子类
-
用Atomic*FieldUpdater等升级自己的变量
-
AtomicIntegerFieldUpdater:原子更新整形字段的更新器
-
AtomicLongFieldUpdater:原子更新长整型字段的更新器
Adder加法器(1.8)比AtomicLong强
-
LongAdder
-
DoubleAdder
Accumulator累加器(1.8)比Adder强
-
LongAccumulator
-
DoubleAccumulator
-
-
结合互斥和非互斥同步—线程安全的并发容器
ConcurrentHashMap(重点,结合了CAS、synchronized)
CopyOnWriteArrayList
并发队列之阻塞队列
-
ArrayBlockingQueue
-
LinkedBlockingQueue
-
PriorityBlockingQueue
-
SynchronousQueue
-
DelayedQueue
-
TransferQueue
-
…
并发队列之非阻塞队列
- ConcurrentLinkedQueue
ConcurrentSkipListMap和ConcurrentSkipListSet
-
-
无同步方案:
final关键字
线程封闭
栈封闭
为了线程安全(使用者角度)
避免共享变量
线程封闭
ThreadLocal
共享变量,但限制
互斥同步,使用各种互斥同步的锁
synchronized
Lock接口的相关类
final关键字
使用成熟工具类
线程安全的并发容器
ConcurrentHashMap
CopyOnWriteArrayList
并发队列
ConcurrentSkipListMap和ConcurrentSkipListSet
使用同步的工具类
atomic包,原子类
2.管理线程,提高效率;
线程池相关类
Executor
Executors
ExecutorService
常见线程池
FixedThreadPool
CachedThreadPool
ScheduledThreadPool
SingleThreadExecutor
ForkJoinPool
…
能获取子线程的运行结果
Callable
Future
FutureTask
3.线程协作配合。
CountDownLatch
倒数
CyclicBarrier
Semaphore
限制总数量
Condition
Exchanger
交换