首先说一下线程安全的概念,上一篇文章中提到过,java只考虑了单个对象下的多线程同步问题,所以只要保证单对象下的线程同步,就是线程安全的。
此外所谓的线程安全就是不需要手动添加同步方法或者同步块,而所谓非线程安全就是在你个人的代码中,如:向Arraylist中插入对象的操作,需要手动添加同步方法 或者同步块。
此外,一般线程安全类都包含了同步方法 或者同步块在类内,所以耗费了很多的系统性能,所以如果不考虑单对象下的多个线程的话,一般不要使用线程安全类。
下面列出java中的线程安全类:
1,Vector(向量类);
2,hashtable;
3,string类由于是不可变的,所以没法讨论线程是否安全,但是如果粗浅的说,string是线程安全的。
下面列出常用的非线程安全的类:
1,ArrayList;
2,HashMap;