版权声明:欢迎转载,请注明出处: https://blog.csdn.net/u014179251/article/details/86162565
一些导致线程不安全的因素
- 指令重排序
- 线程共享内存
- 寄存器中涉及缓存部分
- …待更新
线程活跃性关注的是死锁等问题。
一些可能被忽视的多线程框架、组件等(语言内部设计机制)
- AWT、SWING
- Servlet
- RMI(远程调用)
- … 待更新
只有满足如下状态,一个对象才是不可变的
- 它的状态不能再创建后再被修改;
- 所有域都是final类型(注意:都声明为final类型任然可以是可变的,因为final域可以获得一个到可变对象的引用);
- 并且,它被正确创建(创建时间没有发生this引用的逸出)
设计线程安全类的过程应该包括下面3个基本要素:
- 确定对象状态是由哪些变量构成的(是什么);
- 确定限制状态变量的不变约束(为什么);
- 制定一个管理并发访问对象状态的策略(怎么办)