java语言线程的安全可以按照安全程度分为五个等级:
一 不可变
1.不可变的对象一定是线程安全的,无论是对象的方法实现还是调用者,都不需要再采取任何的线程安全保障措施。
2.不可变带来的安全性是最纯粹的最简单的。
3.final关键字就可以做到不可变。
二 绝对的线程安全
1. 不管运行时环境如何,调用者都不需要任何额外的同步措施。
2.通常代价是很大的,容易不切实际。
3.API中标注自己是线程安全的类,大多数都不是绝对的线程安全。比如vector
三 相对的线程安全
1.通常来说线程是安全的,但对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。
2.大部分线程都属于这种类型,如vector
四 线程兼容
本身不是线程安全的,但是可以通过调用端使用同步来保证安全性。
五 线程对立
无论是否采用同步措施,都无法在并发中使用。