码迷,mamicode.com
首页 > 编程语言 > 详细

java 导致多线程数据安全问题的原因

时间:2020-10-20 16:44:08      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:数据安全   数据   java   一个   if语句   资源   可见   共享   内存   

以多窗口买票为例。

多线程操作共享数据存在安全问题。

是由于数据操作的原子性被破坏导致的。

if语句和之后的operate语句应该具有原子性。没有锁,在if 与 operate 之间可能数据被其他线程修改了。导致数据安全问题。

导致原子性丢失的原因有多个,比如线程自己阻塞,cpu资源调度导致线程挂起等。

 

这里原子性导致的数据安全问题,应该与可见性导致的安全问题分开。

可见性问题是因为一个线程修改了数据,其他线程没有从共享内存中及时刷新工作内存导致的。通常出现在高并发场景,比如多个线程同时高并发的修改某个共享变量。

 

java 导致多线程数据安全问题的原因

标签:数据安全   数据   java   一个   if语句   资源   可见   共享   内存   

原文地址:https://www.cnblogs.com/wllhq/p/13846478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!