volatile可见性案例-黑马
volatile可见性案例-黑马
package com.mozq.demo.demo;
class Task implements Runnable{
//public boolean flag = false;//存在可见性问题,主线程无法监视到线程执行成功。
public volatile boolean flag = false;
@Override
public void run() {
if(!flag){
System.out.println("执行任务");
}
flag = true;
System.out.println("任务执行完毕");
}
}
public class HeiMaVolatileTest {
public static void main(String[] args) {
Task task = new Task();
new Thread(task).start();
while (true){
if(task.flag){
System.out.println("=success=");
}
}
}
}
运行结果
# 主线程获取的flag始终是false,不会打印success。
Connected to the target VM, address: '127.0.0.1:21030', transport: 'socket'
执行任务
任务执行完毕
volatile可见性案例-黑马的更多相关文章
- volatile可见性的一些认识
一.前言 volatile的关键词的使用在JVM内存模型中已是老生常谈了,这篇文章主要结合自己对可见性的一些认识和一些直观的例子来谈谈volatile.文章正文大致分为三部分,首先会介绍一下happe ...
- volatile可见性的一些认识和论证
一.前言 volatile的关键词的使用在JVM内存模型中已是老生常谈了,这篇文章主要结合自己对可见性的一些认识和一些直观的例子来谈谈volatile.文章正文大致分为三部分,首先会介绍一下happe ...
- Java并发编程-volatile可见性的介绍
要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么用? ...
- Volatile可见性 与 Synchronization原子性的优化
Volatile可见性 比如现在我们有这样一段代码:线程等待另一个线程将数据装载完就输出success,可是最后程序一直卡在while循环里没有往下执行. public class VolatileD ...
- volatile可见性和指令重排
volatile关键字的2个作用 1.线程的可见性 2.防止指令重排 什么是线程的可见性? 线程的可见性 就是一个线程对一个变量进行更改操作 其他线程获取会获得最新的值. 线程在执行的行 操作主线程的 ...
- Volatile可见性分析(一)
JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线 ...
- java synchronized实现可见性对比volatile
问题: 大家可以先看看这个问题,看看这个是否有问题呢? 那里有问题呢? public class ThreadSafeCache { int result; public int getResult( ...
- 面经手册 · 第14篇《volatile 怎么实现的内存可见?没有 volatile 一定不可见吗?》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.码场心得 你是个能吃苦的人吗? 从前的能吃苦大多指的体力劳动的苦,但现在的能吃苦已经包括太 ...
- Java内存模型JMM与可见性
Java内存模型JMM与可见性 标签(空格分隔): java 1 何为JMM JMM:通俗地讲,就是描述Java中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这 ...
随机推荐
- 【数据结构05】红-黑树基础----二叉搜索树(Binary Search Tree)
目录 1.二分法引言 2.二叉搜索树定义 3.二叉搜索树的CRUD 4.二叉搜索树的两种极端情况 5.二叉搜索树总结 前言 在[算法04]树与二叉树中,已经介绍过了关于树的一些基本概念以及二叉树的前中 ...
- art-template循环无法显示出数据
art-template循环遍历无法显示数据原因 1.语法问题:循环语句导致的问题 2.插件问题: 用标准语法时循环数据如果引入第一个插件,会导致数据显示不出来只有引入第二个插件才可循环出数据 用原生 ...
- 海思HI3518EV200+AR0130开发板DIY——前篇
海思HI3518EV200+AR0130开发板DIY 今天开始要围绕这个项目学习了(还是得从C开始学 ) 缘起(这段主要水废话)相关开发资料 →_→ 原理图设计 原理图整体框架 一.电源部分 HI35 ...
- Electron 设置 -webkit-app-region 后无法响应鼠标点击事件的解决方式
参考博客:https://blog.csdn.net/qq_20264891/article/details/87721163
- Web基础了解版02-JavaScript
JavaScript 特性 ① 解释型语言.JavaScript是一种解释型的脚本语言,JavaScript是在程序的运行过程中逐行进行解释,不需要被编译为机器码再执行. ② 面向对象.JavaScr ...
- python学习-def1
# 4.可变参数\return# 可变参数:参数个数不固定 .调用的时候来确定有几个参数.# 第一种:*args 在函数内部,是以元组的形式来表示.def my_args(*args): # 放在位置 ...
- android studio 点击后,不打开上次的项目,
取消勾选Reopen last project on startup选项,
- 建议2:注意Javascript数据类型的特殊性---(4)避免误用parseInt
parseInt是一个将字符串转换为整数得函数,与parseFloat(将字符串转换为浮点数)对应,这两种函数是JavaScript提供得两种静态函数,用于把非数字得原始值转换为数字. 在开始转换时, ...
- 《Java知识应用》Java Excel读取(xls、xlsx)和写入
第一步: 链接: https://pan.baidu.com/s/1emJpl7cpvKZyRMzWccAhJA 提取码: p3a7 复制这段内容后打开百度网盘手机App,操作更方便哦 下载jar包: ...
- 【CV现状-2】三维感知
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...