线程安全:当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员变量的值,
不会出错,则我们就说,该的这个方法是线程安全的。
线程不安全(非线程安全):当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员
变量的值,很容易就会发生错误,故我们就说,这个方法是线程不安全的。如果要把这个方法变成线
程安全的,则用 synchronized关键字来修饰该方法即可。
总结:线程安全对共享变量互斥访问 非线程安全不是 所以要是线程间数据相关则而又不是线程安全的话,很危险的
举例说明:ArrayList和Vector、 HashMap和HashTable、StringBuilder和StringBuffer
ArrayList是非线程安全的,Vector是线程安全的;
HashMap是非线程安全的,HashTable是线程安全的;
StringBuilder是非线程安全的,StringBuffer是线程安全的。
ArrayList和Vector:
1、如果List不会被多线程并发访问,使用ArrayList就没有问题,而且速度效率要高些; 2、如果有多线程并发访问List,可以使用Vector,也可以使用ArrayList,
并且自己对可能出现并发冲突的地方自行做synchronized处理。
简单的来讲,在多线程情况下 vector.add(e),这样写就好了,如果你用ArrayList.add(e),那么你就得这样 synchronized(ArrayList) { ArrayList.add(e) } vector:内部已经做了这样的处理了
新闻热点
疑难解答