多线程并发最佳实践
-
使用本地变量
-
使用不可变类
-
最小化锁的作用域范围:S=1/(1-a+a/n)
-
使用线程池的Executor,而不是直接new Thread执行
-
宁可使用同步也不要使用线程的wait和notify
-
使用BlockingQueue实现生产-消费模式
-
使用并发集合而不是加了锁的同步集合
-
使用Semaphpore创建有界的访问
-
宁可使用同步代码块,也不使用同步方法
-
避免使用静态变量
Spring与线程安全
-
Spring bean:singleton,prototype
-
无状态对象
-
只要是无状态对象,不管其是多例还是单例都是线程安全的
-
没有状态对象,实际上没有数据存储功能(片面的理解就是没有属性)例如service controller dao
spring根本没有对bean的线程安全做出任何的保障和措施,那么bean线程安全的原因是在于每个bean的设计,其设计是每个bean都是无状态对象。
-