写点什么

volatile

0 人感兴趣 · 39 次引用

  • 最新
  • 推荐

volatile 关键字与计算机底层的一些杂谈

volatile 是 Java 并发编程中一个非常重要,也是面试常问的一个技术点,用起来很简单直接修饰在变量前面即可,但是我们真的懂这个关键字吗?它在 JVM 底层,甚至在 CPU 层面到底是如何发挥作用的?

京东面试题:说说 synchronized 和 volatile 的区别

今天来介绍一下Java面试中最常会被面试官提到的问题,也是Java多线程中经常被问到的问题:synchronized和volatile的区别,希望能够帮助到Java相关方面的求职者。

Java 中不可或缺的关键字「volatile」

volatile是Java中用于修饰变量的关键字,其可以保证该变量的可见性以及顺序性,但是无法保证原子性。更准确地说是volatile关键字只能保证单操作的原子性, 比如x=1 ,但是无法保证复合操作的原子性,比如x++

https://static001.geekbang.org/infoq/83/8394805822e52cd731fbc7e50549dad8.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

库调多了,都忘了最基础的概念 -《单例模式 VS 状态码》

用户头像
知识浅谈
2022-09-12

库调多了,都忘了最基础的概念-《单例模式VS状态码》

https://static001.geekbang.org/infoq/48/4830fe99a9095715e98dd2dcb9b86ec1.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

缓存一致性与内存屏障

用户头像
蝉沐风
2022-07-27

计算机的演进就是一部在挖坑和填坑之间反复横跳的发展史。对这一点的理解会随着本文的后续讲述逐渐加深。比如高速缓存Cache很好地解决了CPU与内存的速度矛盾,但是也为计算机系统带来了更高的复杂度。

https://static001.geekbang.org/infoq/00/001781df89229a6487ca8c85373cc955.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java 内存模型

用户头像
卢卡多多
2022-06-25

JMM: java memory model (java内存模型)

https://static001.geekbang.org/infoq/a4/a43cdf53d2746ac63e09e528f05d638b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

volatile 的解构

用户头像
卢卡多多
2022-06-11

JMM: java memory model (java内存模型)

谈谈有什么方法可以快捷实现多场景下的线程安全

本文结合示例,谈谈如何在 Java 语言中,实现线程安全的程序。

https://static001.geekbang.org/infoq/87/87c186098a06ac130f01725fc05bbc4f.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

译文《Java 并发编程之 volatile》

用户头像
潘大壮
2022-03-22

volatile是轻量级的synchronized,在多线程编程的安全性方面保证了可见性和有序性。

https://static001.geekbang.org/infoq/9c/9cdbf32fd83d25ca8ea57ebea033aa10.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

什么是 Java Marker Interface(标记接口)

用户头像
Jerry Wang
2021-12-13

先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法。在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口。

volatile 为什么不保证原子性

用户头像
悟空聊架构
2021-12-12

原子性:一个操作或一系列操作是不可分割的,要么同时成功,要么同时失败。

图解 Volatile 原理三

用户头像
悟空聊架构
2021-12-11

你好呀,我是悟空呀~上篇我们讲到用volatile修饰的变量,当某线程更新变量后,其他线程也能感知到。那为什么其他线程能感知到变量更新?

Volatile 原理(二)

用户头像
悟空聊架构
2021-12-10

Volatile是Java虚拟机提供的轻量级的同步机制(三大特性)

对比 volatile vs synchornized

用户头像
悟空聊架构
2021-12-05

你好,我是悟空呀。今天我们学习下 volatile 和 synchornized。

深入理解 volatile 关键字

用户头像
编程江湖
2021-11-25

手写一个双重检验锁的单例设计模式相信大家分分钟就能解决,但有一个问题为什么我需要在类变量前面加一个 volatile 关键字,百度了下一发现它主要用来解决两个问题,即变量内存可见性以及禁止指令重排序,并发编程的三要素除了原子性之外它占了两个,为何它如

https://static001.geekbang.org/infoq/0a/0a89eda5c62a66030c34a90051fe7de7.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

深入汇编指令理解 Java 关键字 volatile

用户头像
AI乔治
2021-04-23

volatile关键字是Java提供的一种轻量级同步机制。它能够保证可见性和有序性,但是不能保证原子性

https://static001.geekbang.org/infoq/34/34cd41b66ab3be23f7ac40136a4c5419.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Disruptor 源码解读

用户头像
lich0079
2021-04-20

本文适合对Disruptor框架和源码有初步了解的读者。 对Disruptor的运行机制在源码级别上做出解读。

volatile 关键字需要知道的几点

用户头像
lich0079
2021-04-18

volatile 可见性,false sharing, lazyset 特性。

https://static001.geekbang.org/infoq/a5/a5c7a84bd8145a017e2872acbbe99f64.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java 并发系列(二):DCL — Double Check Lock

用户头像
TroyLiu
2021-03-29

Double Check Lock 是多线程环境下为提高延迟初始化效率而被广泛使用的一种方式。我们常常会使用延迟初始化,以降低服务启动时间。

Java 并发编程之 JMM & volatile 详解

本文从计算机模型开始,以及CPU与内存、IO总线之间的交互关系到CPU缓存一致性协议的逻辑进行了阐述,并对JMM的思想与作用进行了详细的说明。

https://static001.geekbang.org/infoq/ed/edf83c6152d5a273bf334edc46b12f1c.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

volatile 关键字精讲

用户头像
伯阳
2021-01-08

通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题

https://static001.geekbang.org/infoq/69/694eb4e4c55fcebdf0f912e863a3b918.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

volatile,synchronized 可见性,有序性,原子性代码证明(基础硬核)

用户头像
叫练
2020-12-22

volatile,synchronized可见性,有序性,原子性代码证明(基础硬核)

https://static001.geekbang.org/infoq/09/09718222a2c928e4001cfca16ad41256.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

从 JMM 透析 volatile 与 synchronized 原理

用户头像
码哥字节
2020-12-16

在面试、并发编程、一些开源框架中总是会遇到 volatile 与 synchronized 。synchronized 如何保证并发安全?volatile 语义的内存可见性指的是什么?这其中又跟 JMM 有什么关系,在并发编程中 JMM 的作用是什么,为什么需要 JMM?与 JVM 内存结构有什么区别?

https://static001.geekbang.org/infoq/ad/ad3643259a3ae328e4b767ad075c1994.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java 中 CAS 原理分析 (volatile 和 synchronized 浅析)

用户头像
叫练
2020-12-14

CAS英文解释是比较和交换,是cpu底层的源语,是解决共享变量原子性实现方案,它定义了三个变量,内存地址值对应V,期待值E和要修改的值U,如下图所示,这些变量都是在高速缓存中的,如果两个线程A,B分别通过cas方式同时修改共享变量,假设当A线程先获取时间

volatile_volatile技术文章_InfoQ写作社区