-XX:+UseBiasedLocking -XX:BiasedLockingStartupDelay=0 public class SimpleTest { public static void main(String[] args) { SimpleTest test = new SimpleTest(); System.out.println(ClassLayout.parseInstance(test).toPrintable()); synchronized (test) { System.out.println("hello world"); System.out.println(ClassLayout.parseInstance(test).toPrintable()); } System.out.println("锁释放后:"+ClassLayout.parseInstance(test).toPrintable()); ? } }


? class User{ String userName; } public class SoftLock { public static void main(String[] args) throws InterruptedException { User user = new User(); System.out.println("加锁前(禁用偏向延迟,此时应该是偏向锁默认):"+ClassLayout.parseInstance(user).toPrintable()); final Thread t1 = new Thread(new Runnable() { @Override public void run() { synchronized (user) { System.out.println("t1加锁中:" + ClassLayout.parseInstance(user).toPrintable()); } } }); t1.start(); t1.join(); final Thread t2 = new Thread(new Runnable() { @Override public void run() { synchronized (user) { System.out.println("t1加锁中,因为t1加锁后线程偏向锁不会释放,所以t2会发生偏向锁撤销,最终t2轻量级锁:" + ClassLayout.parseInstance(user).toPrintable()); } } }); t2.start(); t2.join(); System.out.println("加锁后(无锁):"+ClassLayout.parseInstance(user).toPrintable()); } } public class SimpleTest { public static void main(String[] args) { SimpleTest test = new SimpleTest(); System.out.println(ClassLayout.parseInstance(test).toPrintable()); synchronized (test) { System.out.println(ClassLayout.parseInstance(test).toPrintable()); } } }
后续迭代推出重量级锁。