第一次看源码,如果有理解不对的地方希望大家可以留下评论谢谢啦。 理解这个类之前需要先理解java内存模型 51-63 line public class AtomicBoolean implements java.io.Serializable { private static final long serialVersionUID = 4654671469794556979L; private static final VarHandle VALUE; static { try { MethodHandles.Lookup l = MethodHandles.lookup(); VALUE = l.findVarHandle(AtomicBoolean.class, "value", int.class); } catch (ReflectiveOperationException e) { throw new ExceptionInInitializerError(e); } } private volatile int value; 上段代码涉及知识点: 1、Java9以后新.... JDK11-juc包系列之atomic的AtomicBoolean类(一) Java是世界上最好的语言
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。 如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,因此Java1.5版本对其进行了重构,现在的Java8仍沿用了Java1.5的版本。 关于并发编程 在并发编程领域,有两个关键问题:线程之间的通信和同步。 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信,典型的共享内存通信方式就是通过共享对象进行通信。 在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信,在java中典型的消息传递方式就是wait()和notify()。 线程之间的同步 .... 全面理解Java内存模型(偷转) Java是世界上最好的语言