java 并发 之 并发安全性问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 并发 之 并发安全性问题相关的知识,希望对你有一定的参考价值。

多线程编程在提升程序性能的同时也会带来一些安全性问题,产生一下不可预知的结果。其原因在于多线程中每个线程中的操作顺序是不可预测的,对于各个线程共享的资源操作,很可能相互影响。例如统计一个页面的访问量,对一个int类型的值进行累加,每个线程接受到用户请求后就会对该int类型累加。这里就会出现安全性问题,原因在于对数据进行累加的过程并非是一个原子操作,他需要先读取现有的值,然后进行累加,最后重新设置该值。如果在a线程读取现有值后,该值被其他线程更新,那么a线程最后将设置一个错误的值。

出现安全性问题的原因在于:

多个线程访问一个共享资源,并且对该共享资源进行非原子性修改

如何避免安全性问题:

1. 不在线程之间共享资源。

2. 共享资源为不可变资源。

3. 对共享资源访问使用同步。

 

以上是关于java 并发 之 并发安全性问题的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程之set集合的线程安全类你知道吗

java并发之线程安全问题

Java并发编程之线程安全线程通信

java并发之hashmap

java并发之如何解决线程安全问题

[Java 并发编程实战] 集合框架之 同步容器类 & 并发容器类