锁消除:JVM通过逃逸分析发现作为锁的对象是局部对象时,则会把锁消除来提高性能。
锁粗化:当JVM发现一个线程不停地进行一个资源的请求与释放时(循环),则会将同步代码块的范围扩大,提高性能。
偏向锁:消除事实上只有一个线程的情况下CAS造成的浪费问题。
轻量锁:如果持有锁的线程能在很短时间内释放锁资源,那么其他线程则不需要阻塞,可以通过自旋的方式获得锁,避免重量级锁的阻塞和唤醒,提高程序的响应速度。
重量级锁:在多线程同时竞争激烈的情况下,不使用自旋,不会消耗CPU。
static synchronized:全局锁,针对类,无论实例多少个对象,都共享该锁。
原文:https://www.cnblogs.com/kunwu/p/13654249.html