synrhronized
如果synrhronized加在静态方法上,则锁住整个class;如果加在实例方法中,锁this,即当前对象。
自旋锁
基本思路就是自旋,不成功再阻塞,尽量降低阻塞的可能性,这可以提高那些执行时间很短的代码块的性能。
CAS与偏向锁
CAS(Comparet and swap)就好比安检仪器,如果检测同步操作时有异常就反复尝试,直到异常释放才可以操作成功。
偏向锁好比有了一个记录机制,如果一个线程第一次检测没问题,之后再使用它就不需要检测。如果遇到了一个比他权限高的线程,持有偏向锁的线程会先挂起,然后等全限高的线程执行完,再恢复运行。
轻量级锁与重量级锁
轻量级锁如CAS,没有涉及到操作系统干涉线程的阻塞和挂起。性能消耗小。但是如果这个CAS竞争非常激烈,会导致性能下降,那么直接就用重量级锁如synrhronized
原图