转自《深入理解java虚拟机》
1.不可变 immutable 、final的基本类型变量、or 对象的变量全部是final的
2. 绝对线程安全:不管运行时环境如何,调用者都不需要任何额外的同步措施
3.相对线程安全,需要保证对这个对象单独的操作是线程安全的,在调用的时候不需要做额外的保障措施。但是特性顺序的连续调用,可能需要额外的同步。大部分线程安全的类是相对线程安全的
4.线程兼容:对象本身并不是线程安全的,但是可以通过在调用端使用同步手段保证对象在并发环境中安全地使用
5.线程对立 suspend(),resume():不管调用端是否采用了同步措施,都无法在多线程环境中并发使用的代码