加了volatile之后依然线程不安全

来源:2-4 并发模拟-代码

慕虎8548721

2018-07-15

http://img.mukewang.com/szimg/5b4a8490000121b814490827.jpg

原本这是一个线程不安全的类,他的原因我想可能是因为在count读取的过程中发生的问题,所以就加了volatile,想的这样就可以保证在同一个时刻只能有一个县城操作count,保证线程安全,但是多测试了几次发现依然不是线程安全的,那么问题出在哪儿,请老师解惑,谢谢老师 

写回答

1回答

Jimin

2018-07-15

你好,volatile只具备可见性,不具备原子性,因此单独依靠volatile是保证不了线程安全的。
课程里这一部分只是并发的一个体验,告诉大家并发场景下不做一些控制会带来线程不安全问题,导致最终结果出错。
课程后面会继续根据这个例子做线程安全的处理,volatile加入后的处理会在线程安全性那一章的可见性里具体介绍。你可以在那个章节学完后再看看这个疑问是否已经解决了。
祝你学习愉快。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程