本文列举了Java多线程相关的一些重要概念,作为后续系列文章索引。
Linux锁机制对比
- spinlock: 自旋锁,CPU自旋等待获得锁,运行机制CAS (Compare and Swap)
- mutex: 互斥锁,线程sleep等待锁
- semaphore:信号量,同步机制,如果信号量的值为1,则效果与mutex相同。如果信号量为2则可以同时让两个线程访问资源
参考:spinlock、semaphore和mutex的区别
JAVA原子类与CAS
JAVA synchronize关键字与Lock
JAVA信号量
Java多线程实现原理
- volatile关键字
- AQS
volatile 关键字
作用:
- 内存可见性
- happens-before
AQS
参考: