美文网首页
线程安全问题(Java)

线程安全问题(Java)

作者: Andy_0801 | 来源:发表于2017-03-30 15:12 被阅读0次

本文小编从网上载入,原文地址http://www.cnblogs.com/chy2055/p/5175969.html

1:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。

2:线程安全:

当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员变量的值,不会出错,则我们就说,该的这个方法是线程安全的。

某类的某方法是否线程安全的关键是:

(1) 该方法是否修改该类的成员变量;

(2) 是否给该方法加锁(是否用synchronized关键字修饰)。

3:线程不安全:

当多个线程类并发操作某类的某个方法,(在该方法内部)来修改这个类的某个成员变量的值,很容易就会发生错误,故我们就说,这个方法是线程不安全的。如果要把这个方法变成线程安全的,则用synchronized关键字来修饰该方法即可。

注:用synchronized关键字修饰方法,会导致加锁,虽然可以使该方法线程安全,但是会极大的降低该方法的执行效率,故要慎用该关键字。

用 ArrayList还是Vector,二者如何取舍?

线程安全:指多线程操作同一个对象的某方法,修改该类的成员变量时,不会出现错误。

非线程安全:指多线程操作同一个对象的某方法,修改该类的成员变量时,可能会出现错误。

线程安全必须要使用很多synchronized关键字来同步控制,所以必然会导致性能的降低。

所以在使用的时候,如果是多个线程操作同一个对象,那么使用线程安全的Vector;否则,就使用效率更高的ArrayList。

非线程安全!=不安全

有人在使用过程中有一个不正确的观点:我的程序是多线程的,不能使用ArrayList要使用Vector,这样才安全。

非线程安全并不是多线程环境下就不能使用。注意上面有说到:多线程操作同一个对象。注意是同一个对象

比如最上面那个模拟,就是在主线程中new的一个ArrayList然后多个线程操作同一个ArrayList对象,就会有安全问题。

如果是每个线程中new一个ArrayList,而这个ArrayList只在这一个线程中使用,那么肯定是没安全问题的。

总结:

若多个线程同时修改某个外部传来的对象的成员变量,很容易就会出现错误,我们称之为线程不安全。(该类的这个方法是线程不安全的。若要线程安全,用synchronized关键字修饰即可)。

相关文章

  • volatile关键字

    线程安全问题 Java多线程带来的一个问题是数据安全问题,判断一段Java代码是否有线程安全问题可从以下几点入手:...

  • 线程安全问题

    线程安全问题 本篇主要讲解 线程安全问题,演示什么情况下会出现线程安全问题,以及介绍了 Java内存模型 、vol...

  • java多线程(壹)——线程与锁

    线程与线程安全问题 所有的线程安全问题都可以概况为三个点:原子性,可见性、有序性——————by Java多线程编...

  • java 线程安全问题的解决办法 和死锁

    线程安全问题的解决办法 线程 安全问题的解决方案:sun提供了线程同步机制让我们解决这类问题的。 java线程同步...

  • java同步机制的几种方式

    java同步机制的几种方式 出现线程安全问题: 如果存在多个线程对共享资源竞争,就可能发生线程安全问题。 一般解决...

  • 锁机制

    一、说说线程安全问题,什么是线程安全,如何保证线程安全 http://www.jasongj.com/java/t...

  • 简单聊聊 Java线程的并发

    哈喽大家好,上一篇文章我们聊了聊Java线程的基础知识,这一篇文章我们就来聊聊线程中的线程安全问题 线程安全问题 ...

  • 同步监视器锁定的释放问题

    在任何编程语言中,事关线程安全问题非常重要,而同步监测器是解决java多线程安全问题的关键,关于监测器锁定...

  • 关于AtomicInteger

    AtomicInteger JAVA原子操作的Interger类, 主要为解决多线程线程安全问题,今天拿来测试一下...

  • Java并发之synchronized

    一、前言序章   Java因为实现的是共享数据模型,在多线程操作共享数据时,会引起线程安全问题。Java为了解决线...

网友评论

      本文标题:线程安全问题(Java)

      本文链接:https://www.haomeiwen.com/subject/fofpottx.html