volatile不能保证程序执行的原子性以及只能一定程度上保证有序性
来源:互联网 发布:针孔摄像头安装软件 编辑:程序博客网 时间:2024/05/29 13:56
多线程并发编程如何正确的执行程序:
1、原子性:执行过程要么成功要么失败,比如经典的银行转账问题。
2、可见性:多线程并发时,一个线程修改了工作内存中的值(主存中的值),会立刻改变主存相应地址的值,其它线程工作内存的值无效,重新获取主存的值。
3、有序性:程序执行的顺序,单个线程中没有依赖的代码,cpu会进行指令重排,使代码执行顺序调换,但是不影响最终执行的结果(单线程没有任何问题,多线程就会出现问题)
总结:解决多线程并发问题,需要程序满足上面三个条件才能正确执行。
volatile能保证第二点可见性。
volatile能禁止指令重排序(所以volatile能在一定程度上保证有序性),但是这里只能保证volatile所修饰的变量之前的程序不会在该变量之后执行,该变量之后的代码不会在变量之前执行。
0 0
- volatile不能保证程序执行的原子性以及只能一定程度上保证有序性
- volatile不能保证程序执行的原子性以及只能一定程度上保证有序性
- volatile不能保证原子性
- 为何volatile不能保证原子性操作
- 为什么volatile不能保证原子性
- 为什么volatile不能保证原子性
- volatile 可以保证可见性,但不能保证原子性。某种意义上是线程不安全的
- volatile 不能保证变量的原子性的操作
- 保证有序性、原子性、可见性
- 为什么volatile不能保证原子性而Atomic可以(valatile只保证可见性,不保证原子性)
- 为什么volatile不能保证原子性而Atomic可以?
- 为什么volatile不能保证原子性而Atomic可以
- 为什么volatile不能保证原子性而Atomic可以?
- 为什么volatile不能保证原子性而Atomic可以
- 为什么volatile不能保证原子性而Atomic可以?
- 为什么volatile不能保证原子性而Atomic可以?
- 为什么volatile不能保证原子性而Atomic可以?
- 为什么volatile不能保证原子性而Atomic可以?
- HDU
- bug:单击任何其他页面的输入框时自动跳转到首页
- 《第一行代码》第 1 章
- Java中IO流的使用方法之转换流
- BOOST 线程完全攻略
- volatile不能保证程序执行的原子性以及只能一定程度上保证有序性
- 零散的=。=
- UNIX再学习 -- shell编程
- 带你入门哈夫曼编码和哈夫曼树
- 解决Request method "GET" not supported
- F
- jquery的get()方法
- 【CPU卡】认证
- 删除指定元素