被唤醒的线程会重新标记对象头为锁定状态,然后继续执行同步块中的内容。
重量级锁的优点是可以解决轻量级锁中的ABA问题,但是其性能消耗也是最大的。...锁定超时:可以通过-XX:MonitorTimeout=x设置重量级锁定超时时间,以避免线程因锁定过长出现死锁现象。...偏向锁资源消耗最少,单线程场景使用;轻量级锁性能较好,使用CAS实现,存在ABA问题;重量级锁性能最差但安全,用于阻塞线程和处理ABA问题。
Synchronized如何进行锁升级?...ReentrantLock是JDK实现的,性能更好,可以设置公平锁、锁定超时时间等,但是使用不当会造成死锁,并且需要手动释放锁,否则可能导致资源泄漏。...主要有以下几种锁:
偏向锁:锁定一次后,后续的锁定由同一线程完成,适用于单线程或同一线程重复加锁的场景
轻量级锁:使用CAS操作进行加锁,性能好但存在ABA问题,用于短期加锁
重量级锁:进入内核态阻塞