10.多线程并发拓展
2019-11-29 本文已影响0人
JarvisTH
一、死锁
1.条件:
- 互斥条件
- 请求和保持条件
- 不剥夺条件
- 环路等待条件
二、多线程并发最佳实践
- 使用本地变量
- 使用不可变类
- 最小化锁的作用域范围:S=1/(1-a+a/n)
- 使用线程池Executor
- 使用同步,不使用线程的wait和notify
- 使用BlockingQueue实现生产-消费模式
- 使用并发集合而不是加了锁的同步集合
- 使用semaphore创建有界访问
- 使用同步代码块,不使用同步方法
- 避免使用静态变量
三、Spring与线程安全
- Spring bean:singleton、prototype
- 无状态对象
四、HashMap与ConcurrentHashMap