社区
Java
帖子详情
2020-09-29:介绍volatile功能。
福大大架构师每日一题
2020-09-29 07:03:21
2020-09-29:介绍volatile功能。#福大大架构师每日一题#
...全文
2617
6
打赏
收藏
2020-09-29:介绍volatile功能。
2020-09-29:介绍volatile功能。#福大大架构师每日一题#
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
苜苜的烂笔头
2020-09-29
打赏
举报
回复
修饰公共变量,保证变量在多线程环境中保证可见性和有序性。
KeepSayingNo
2020-09-29
打赏
举报
回复
保证被修饰的变量对应多线程是可见的,还可以控制CPU的指令重排,保证线程的执行顺序
澜风yf
2020-09-29
打赏
举报
回复
Java 提供了 volatile 关键字来保证可见性和禁止指令重排。 volatile 提供 happens-before 的保证,确保一个线程的修改能对其他线程是可见的。当一个共享变量被 volatile 修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。 从实践角度而言,volatile 的一个重要作用就是和 CAS 结合,保证了原子性,详细的可以参见 java.util.concurrent.atomic 包下的类,比如 AtomicInteger。 volatile 常用于多线程环境下的单次操作(单次读或者单次写)。 关键字volatile的主要作用是使变量在多个线程间可见,但无法保证原子性,对于多个线程访问同一个实例变量需要加锁进行同步。 volatile 表示变量在 CPU 的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。 volatile与synchronized的 区别: - volatile 是变量修饰符;synchronized 可以修饰类、方法、变量。 - volatile 仅能实现变量的修改可见性,不能保证原子性;而 synchronized 则可以保证变量的修改可见性和原子性。 - volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。 - volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化。 - volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JavaSE1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后执行效率有了显著提升,实际开发中使用 synchronized 关键字的场景还是更多一些。
亦夜
2020-09-29
打赏
举报
回复
保证可见性,不保证原子性,禁止指令重排
福大大架构师每日一题
2020-09-29
打赏
举报
回复
百度搜索【福大大架构师每日一题】
略知java的景初
2020-09-29
打赏
举报
回复
https://blog.csdn.net/weixin_43876121/article/details/107445595
2020
-
09
-20
AQS深入理解系列(一) 独占锁的获取过程 anlian523
2020
-06-03 00:03:19 ...
2020
-11-19
Java多线程面试题,我丝毫不慌 置顶 Java3y
2020
-07-28
09
:18:51 ...
线程池源码解读(保证让你受益匪浅系列)
date:
2020
-
09
-25 14:22:
29
tags: categories: concurrency 我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 ...
NXP (I.MX6ULL) GPT高精度延时定时器
发布时间:
2020
-
09
-20 11:50:14 网址:https://blog.csdn.net/weixin_453
09
916/article/details/108690475 目录0、GPT 定时器简介1、GPT 定时器特性如下:2、GPT 定时器的可选时钟源如下图所示:3、GPT 定时器结构...
Rockchip RK3588 - 移植uboot 2017.
09
& linux 6.1(友善之家脚本方式)
boot :2017.
09
linux :6.1 ---------------------------------------------------------------------------------------------------------------------------- 本节将会
介绍
官方固件方式uboot 2017.
09
以及linux ...
Java
51,411
社区成员
86,003
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章