Volatile可见性
Volatile
使变量在多个线程可见
每一个线程都会有一块工作内存区
其中,存放着所有线程共享的主内存中的变量值的拷贝
当线程执行时
在自己的工作区内存中,操作这些变量
共享内存
当主内存中变量值改变时,会写到相应线程的工作内存中
为了存取一个共享变量,一个线程通常,先获取锁定,并去清除它的内存工作区
把这些共享变量从所有线程的共享内存中,正确的装载到它自己所在工作内存中,当线程解锁时,保证该工作内存区中变量的值,回写到共享内存中
Volatile作用
强制线程到主内存,共享内存里去读取变量,而不去线程工作内存区中读取
从而,实现了多个线程间的变量可见,线程的安全可见性
package com.bjsxt.base.sync007;public class RunThread extends Thread {private volatile boolean isRunning = true;private void setRunning(boolean isRunning) {this.isRunning = isRunning;}public void run() {System.out.println("进入run方法..");int i = 0;while (isRunning == true) {// ..}System.out.println("线程停止");}public static void main(String[] args) throws InterruptedException {RunThread rt = new RunThread();rt.start();Thread.sleep(1000);rt.setRunning(false);System.out.println("isRunning的值已经被设置了false");}}
运行
Volatile可见性相关推荐
- java 可见性_Java并发编程-volatile可见性详解
前言 要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么 ...
- volatile可见性MESI协议volatile
volatile 的作用 volatile 的主要作用有三点: - 保证变量的内存可见性 ,有序性(禁止指令重排序),不保证原子性. 可见性 简单解释:指当多个线程访问同一个变量时,一个线程修改了这个 ...
- Volatile可见性、缓存一致性协议、指令重排、内存屏障 - 手写笔记
- Volatile可见性底层实现原理
- Java并发,volatile+不可变容器对象能保证线程安全么?!
<Java并发编程实战>第3章原文 <Java并发编程实战>中3.4.2 示例:使用Volatile类型来发布不可变对象 在前面的UnsafeCachingFactorizer ...
- 死磕Java并发:Java内存模型之分析volatile
近期活动:加班的你,需要一束光 本文转载自公众号: Java技术驿站 前篇文章<死磕Java并发:深入分析volatile的实现原理>中已经阐述了volatile的特性了: volatil ...
- Java并发编程——volatile
引 volatile可以看成是轻量级的低配版的Synchronized,他主要是作用于共享变量,保证共享变量的可见性.确保共享变量在主内存中一致地准确的更新通知到各个线程,这是Volatile的可见性 ...
- Java 多线程之 synchronized 和 volatile 的比较
概述 在做多线程并发处理时,经常需要对资源进行可见性访问和互斥同步操作.有时候,我们可能从前辈那里得知我们需要对资源进行 volatile 或是 synchronized 关键字修饰处理.可是,我们却 ...
- 如何理解 JAVA 中的 volatile 关键字
如何理解 JAVA 中的 volatile 关键字 最近在重新梳理多线程,同步相关的知识点.关于 volatile 关键字阅读了好多博客文章,发现质量高适合小白的不多,最终找到一篇英文的非常通俗易懂. ...
最新文章
- 单片机编程好学吗?单片机初学者怎样看懂代码?
- 聊聊底线 | 坏数据与假数据
- 本地导入Android-PullToRefresh库问题解决
- 简单的点击展开/关闭效果
- Linux系统基础优化
- 手撕设计模式之「工厂方法模式」(Java描述)
- 产品必懂技术术语(后台类)
- python / 内置的数据结构概述
- Docker:恢复对开源项目的无限制访问
- 高等数学下-赵立军-北京大学出版社-题解-练习9.2
- wps分享为什么要登入_[win]为什么你需要便携应用?portableapps让你得心应手.
- 怎么去调需要登录的接口_遇到需要的登录的网站怎么办?学好python,用这3招轻松搞定...
- Github windows客户端简单上手教程
- Java解析JSON的四种方式
- 2021爱分析·时尚品牌数字化厂商全景报告
- 泰克示波器存储格式,在存储时怎么选择?
- 【程序员如何买基金 五】挑选合适的指数和指数基金
- android 10.0 wifi开关控制
- 华为强推996工作制,程序员们的变态加班何时休?
- html前端代码的初步实现(一)