我的github: https://github.com/soyoungboy
我的segmentfault: http://segmentfault.com/u/soyoungboy
【不积跬步,无以至千里;不积小流,无以成江海】
博客园 首页 新随笔 联系
管理 随笔-477 评论-20 文章-0
内存可见性(Memory Visibility)
1 内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。
2 可见性错误是指当读操作与写操作在不同的线程中执行时,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。我们可以通过同步来保证对象被安全地发布。除此之外我们也可以使用一种更加轻量级的 volatile 变量。
volatile 关键字
Java 提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程。可以将 volatile 看做一个轻量级的锁,但是又与锁有些不同:
对于多线程,不是一种互斥关系不能保证变量状态的“原子性操作”
1,不使用volatile
package com.wangfubin;
public class Main {
public static void main(String[] args){
MyThread td=new MyThread();
new Thread(td).start();
while(true){
if(td.isFlag()){
System.out.println("-----------");
break;
}
}
}
}
class MyThread implements Runnable{
private boolean flag=false;
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag=true;
System.out.println("flag="+isFlag());
}
public boolean isFlag(){
return flag;
}
public void setFlag(boolean flag){
this.flag=flag;
}
}
2,使用volatile
package com.wangfubin;
public class Main {
public static void main(String[] args){
MyThread td=new MyThread();
new Thread(td).start();
while(true){
if(td.isFlag()){
System.out.println("-----------");
break;
}
}
}
}
class MyThread implements Runnable{
private volatile boolean flag=false;
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag=true;
System.out.println("flag="+isFlag());
}
public boolean isFlag(){
return flag;
}
public void setFlag(boolean flag){
this.flag=flag;
}
}
返回结果:
posted on 2017-03-19 15:51
西北野狼 阅读(25) 评论(0)
编辑 收藏 刷新页面返回顶部 注册用户登录后才能发表评论,请
登录 或
注册,
访问网站首页。
【推荐】超50万VC++源码: 大型工控、组态\仿真、建模CAD源码2018!【推荐】微信小程序一站式部署 多场景模板定制 最新IT新闻:
·
你逛的这些地方,可能都是腾讯的地盘 ·
你已经习惯了的这些衣食住行,其实都是阿里的地盘 ·
华为云总裁郑叶来:公有云竞争远未结束 AI被过度消费 ·
扎克伯格纪念FB诞生14周年:你们想到的错误 我都犯过 ·
A站凉了,百万“猴子”无家可归»
更多新闻... 最新知识库文章:
·
领域驱动设计在互联网业务开发中的实践 ·
步入云计算 ·
以操作系统的角度述说线程与进程 ·
软件测试转型之路 ·
门内门外看招聘»
更多知识库文章... 昵称:
西北野狼园龄:
4年6个月粉丝:
34关注:
3 +加关注
|
日 |
一 |
二 |
三 |
四 |
五 |
六 |
28 |
29 |
30 |
31 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
搜索
常用链接
我的标签
随笔分类
随笔档案
My github
我的个人博客站点
积分与排名
最新评论
阅读排行榜
评论排行榜
推荐排行榜
Powered by:
博客园 模板提供:
沪江博客 Copyright ©2018 西北野狼