专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
芋道源码  ·  入职第一天,看了公司代码,牛马沉默了 ·  5 小时前  
Java编程精选  ·  Controller层代码这么写,简洁又优雅! ·  昨天  
芋道源码  ·  如何实现一个合格的分布式锁 ·  昨天  
51好读  ›  专栏  ›  java一日一条

Java中Volatile关键字详解

java一日一条  · 公众号  · Java  · 2018-04-10 09:50

正文

请到「今天看啥」查看全文


原子性:

原子是世界上的最小单位,具有不可分割性。 比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们称它具有原子性。java的concurrent包下提供了一些原子类,我们可以通过阅读API来了解这些原子类的用法。比如:AtomicInteger、AtomicLong、AtomicReference等。

在 Java 中 synchronized 和在 lock、unlock 中操作保证原子性。

有序性:

Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 是因为其本身包含“禁止指令重排序”的语义,synchronized 是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,此规则决定了持有同一个对象锁的两个同步块只能串行执行。

下面内容摘录自《Java Concurrency in Practice》:







请到「今天看啥」查看全文


推荐文章
Java编程精选  ·  Controller层代码这么写,简洁又优雅!
昨天
芋道源码  ·  如何实现一个合格的分布式锁
昨天
教你驾驭男人  ·  怎样看出男人有没有暴力倾向?
8 年前
健康常识百科  ·  五种走路方式最伤腰腿,你需要知道!
8 年前
正午故事  ·  赌王的黄昏 | 正午
8 年前