JDK1.6 synchronized (底层是由C++实现的):
synchronized: 互斥锁,悲观 锁,同步锁,重量级锁(耗性能),多线程使用重量级锁很容易发生线程阻塞,因为涉及到多个线程的启动和运行;
在线程执行具体某个方法时,其他会通过synchronized实现机制丢到任务队列,等执行线程释放锁,其他线程根据抢占获得锁,在抢占的过程中,根据上下文的切换操作系统的的调度,就会发生线程的阻塞
说明一点:JDK1.6就开始对synchronized 做了大量的优化。
通过实践对比(原子类和synchronized的性能)
原子类比synchronized锁 n++ 自增的效率更快。
原子类的底层实现是不断通过while循环进行cas,直到value设置成功,在while的这一步可能会发生死循环。
CAS(compareAndset,compareAndSwapInt),自选会成为CAS的瓶颈
cas:无锁,自旋锁,乐观锁,