1、java 高并发包所采用的几个机制(CAS,volatile,抽象队列同步)
CAS(乐观操作),jdk5以前采用synchronized,对共享区域进行同步操作,synchronized是重的操作,在高并发情况下,会引起线程频繁切换;而CAS是一种乐观锁机制,compare and swap,不加锁,而是假设没有冲突去完成,若有冲突会重试(非阻塞)。compare&swap是原子操作,基于CPU的原语操作。
volatile(变量的可见性),VM阻止volatile变量的值放入处理器的寄存器,在写入值以后会被从处理器的cache中flush掉,写到内存中去,这样其他线程都可以立刻看到该变量的变化。
AQS,抽象队列同步器(原子性操作状态同步位、有序队列、阻塞唤醒进程)
获取锁:首先判断当前状态是否允许获取锁,如果是就获取锁,否则就阻