Java高并发与多线程(四)-----锁

今天,我们开始Java高并发多线程的第四篇,

之前的三篇,基本上都是在讲一些概念性和基础性的东西,东西有点零碎,但是像文科科目一样,记住就好了。

但是本篇是高并发里面真正的基石,需要大量的理解和实践,一环扣一环,环环相扣,不难,但是需要认真去读。

好了,现在开始。

   

--------------第一部分,咱们要谈到java里面的两个用于保证线程之间有序性的关键字--------------

【synchronized】

synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。

synchronized可以保证java代码块中的原子性,可见性和有序性

   

Java 内存模型中的可见性、原子性和有序性

可见性

 

是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。

 

原子性

 

原子是世界上的最小单位,具有不可分割性
非原子操作都会存在线程安全问题,有时候需要我们使用同步技术(sychronized)来让它变成一个原子操作。
java的concurrent包下就提供了一些原子类(AtomicInteger,AtomicLong,AtomicReference......),咱们之后会讲。

 

有序性

 

java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性;
volatile 其本身包含"禁止指令重排序"的语义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfxwy.html