Part1:传统并发
0:线程的生命周期
2:Java 并发:内置锁 Synchronized(同步)
3:深入理解Java并发之synchronized实现原理(同步)
6:ThreadLocal系列(隔离、通信)
7:java自带定时器Timer(定时)
Part2:JUC系列(java.util.concurrent包)
1:Locks部分(同步、通信)
-
条件锁 condition
AQS介绍:注:信号量Semaphore的类结构与ReetrantLock的类结构几乎如出一辙,只不过ReetrantLock是独占锁,而Semaphore是共享锁.下面是Semaphore类结构图.
2:Atomic部分(通信)
3:Executor部分(线程管理):发音[ɪɡˈzekjətə®]
-
3.1 类图
-
3.2 ThreadPoolExecutor构造函数:
-
3.3 参考
-
3.4 线程池使用总结
1:不用工具类Executors去创建线程池,因为这种方式把线程池的参数限制死了,不够灵活,不能根据实际场景建更合适的线程池;
2:尽量将线程池定义为类的静态属性而不是定义为方法局部变量,根据业务具体分析,如果预测短时间没有任务执行了,可以调用shutdown()方法关闭线程,否则,一直保留线程active;
3:以new ThreadPoolExecutor()方式创建线程池。具体参数参考这里.饱和策略参数 RejectedExecutionHandler:自定义饱和策略RejectedExecutionHandler,将拒绝执行的任务日志化,以便日后手动数据恢复.
4:Collections部分(通信)
5:Tools部分:Exchanger、CountDownLatch、CyclicBarrier、Semaphore、Phaser
Part3:各种锁