线程安全概念:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
vector :就比 arraylist 多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。
statck :堆栈类,先进后出;
hashtable :就比 hashmap 多了个线程安全
enumeration :枚举,相当于迭代器
- StringBuffer 是线程安全,而 StringBuilder 是线程不安全的。
StringBuffer支持并发操作,线性安全的,适合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。
- StringBuffer 是线程安全,而 StringBuilder 是线程不安全的。
所以:
LinkedList 和 ArrayList 都是不同步的,线程不安全;
Vector 和 Stack 都是同步的,线程安全;
Set是线程不安全的;
Hashtable的方法是同步的,线程安全;
HashMap的方法不是同步的,线程不安全;
附:
StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都
会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。