1.不可变
不变的对象绝对是线程安全的,不需要线程同步,如String、Long、BigInteger
2.无条件的线程安全
对象自身做了 足够的内部同步,也不需要外部同步,如 Random 、ConcurrentHashMap、Concurrent集合、atomic
3.有条件的线程安全
对象的部分方法可以无条件安全使用,但是有些方法需要外部同步,需要Collections.synchronized;有条件线程安全的最常见的例子是遍历由 Hashtable 或者 Vector 或者返回的迭代器
4.非线程安全(线程兼容)
对象本身不提供线程安全机制,但是通过外部同步,可以在并发环境使用, 如ArrayList HashMap
5.线程对立
即使外部进行了同步调用,也不能保证线程安全,这种情况非常少,如如System.setOut()、System.runFinalizersOnExit()
本文详细介绍了不同对象在线程环境下的安全级别,包括不可变对象、无条件线程安全对象、有条件线程安全对象、非线程安全对象以及线程对立对象,并提供了具体的示例。
744

被折叠的 条评论
为什么被折叠?



