java volatile 线程间的变量可见性
来源:互联网 发布:gta5捏脸数据御姐 编辑:程序博客网 时间:2024/06/05 06:50
public class VolatileTest { public static void main(String[] args) { final T t = new T(); /** * 线程1每一秒让t对象count + 1 * 线程2 当t.count == 5 循环结束 * 加上volatile t2可以检测到t.count的变化 * * volatile 保证了多个线程之间变量的可见性 * 线程在开始运行时会从主内存中copy t.count 到各自线程的工作内存中,在运行中并不会再去堆内存去读取count 所以各个线程是不可见的 * 加上 volatile 当t.count 写入主内存中的时候 会给其他线程发送 缓冲过期通知 其他线程会再去主内存中读取 * 注意 volatile 是不适合做同步的 更不能代替synchronized */ System.out.println(t.getCount().hashCode()); Thread t1 = new Thread(new Runnable() { @Override public void run() { for(int i = 0 ; i < 10; i++) { System.out.println(t.getCount().hashCode()); t.next(); try { System.out.println(t.getCount()); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); t1.start(); final Thread t2 = new Thread(new Runnable() { @Override public void run() { while (true) { if(t.getCount() == 5) { System.out.println("t2 end"); break; } } } }); t2.start(); }}class T { volatile Integer count = 0; void next() { count ++; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; }}
阅读全文
0 0
- java volatile 线程间的变量可见性
- Java Volatile 变量的可见性
- java学习12--线程的可见性,synchronized,volatile使用
- 多线程间一致可见性volatile变量
- 2.3.3volatile变量在多个线程间可见
- 变量可见性和Volatile
- Java关键字volatile,原子性,变量可见性
- 共享变量在线程间的可见性
- volatile关键字用法以及线程数据可见性的问题
- Java之多线程内存可见性_2(volatile实现可见性)
- java volatile可见性解析
- 趣谈Java变量的可见性问题
- 关于Java变量的可见性问题
- Java线程可见性
- Java 线程概述: 线程种类、状态,原子性、内存可见性、synchronized、volatile
- Java并发编程-volatile可见性的介绍
- Java之多线程内存可见性_2(volatile不能保证原子性)
- Java之多线程内存可见性_3(synchronized和volatile比较)
- Android_判断手机网络状态
- [LeetCode]150. Evaluate Reverse Polish Notation
- Linux设备树-未完成
- 两行命令搞定数据库变数据框
- 欢迎使用CSDN-markdown编辑器
- java volatile 线程间的变量可见性
- HDU-6184 (无向图三元环计数)
- ViewPager内卡顿
- HDU5858-Hard problem
- 我是如何自学成为程序员的
- 通过递归实现嵌套未知次数的循环
- 人脸识别之特征脸方法
- 位运算---只使用位运算实现整数的加减乘除
- CSS Hack技术解决多浏览器兼容问题