java.util.concurrent分享

JAVA 内存模型

通过内存屏障实现的可见性和禁止重排序。不同硬件实现内存屏障的方式不同,Java内存模型屏蔽了这些差异,由JVM来为不同的平台生成相应的机器码来完成。

《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》

JAVA 先行发生原则(Happens-Before)

  • 单线程happen-before原则:在同一个线程中,书写在前面的操作happen-before后面的操作。
  • 锁的happen-before原则:同一个锁的unlock操作happen-before此锁的lock操作。
  • volatile的happen-before原则:对一个volatile变量的写操作happen-before对此变量的任意操作(当然也包括写操作了)。
  • happen-before的传递性原则:如果A操作 happen-before B操作,B操作happen-before C操作,那么A操作happen-before C操作。
  • 线程启动的happen-before原则:同一个线程的start方法happen-before此线程的其它方法。
  • 线程中断的happen-before原则:对线程interrupt方法的调用happen-before被中断线程的检测到中断发送的代码。
  • 线程终结的happen-before原则:线程中的所有操作都happen-before线程的终止检测。
  • 对象创建的happen-before原则:一个对象的初始化完成先于他的finalize方法调用。

java.util.concurrent

AQS 双向链表的FIFO队列

state
fifo queue

The java.util.concurrent Synchronizer Framework - Doug Lea

Java技术之AQS详解

并发 colleciton