您的位置:首页 > 编程语言 > Java开发

线程安全、非线程安全

2017-02-16 11:08 253 查看
线程安全:当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员变量的值,

                    不会出错,则我们就说,该的这个方法是线程安全的。

线程不安全(非线程安全):当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员

                    变量的值,很容易就会发生错误,故我们就说,这个方法是线程不安全的。如果要把这个方法变成线

                    程安全的,则用 synchronized关键字来修饰该方法即可。

总结:线程安全对共享变量互斥访问 

            非线程安全不是

            所以要是线程间数据相关则而又不是线程安全的话,很危险的

举例说明:ArrayList和Vector、[b] HashMapHashTable、StringBuilderStringBuffer[/b]

                    ArrayList是非线程安全的,Vector是线程安全的;

         HashMap是非线程安全的,HashTable是线程安全的;

         StringBuilder是非线程安全的,StringBuffer是线程安全的。

      
ArrayListVector:

      1、如果List不会被多线程并发访问,使用ArrayList就没有问题,而且速度效率要高些;

      2、如果有多线程并发访问List,可以使用Vector,也可以使用ArrayList,


         并且自己对可能出现并发冲突的地方自行做synchronized处理。

简单的来讲,在多线程情况下 vector.add(e),这样写就好了,如果你用ArrayList.add(e),那么你就得这样 

synchronized(ArrayList) 



    ArrayList.add(e) 



vector:内部已经做了这样的处理了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程安全 并发