装修平台哪家好,seo 优化 服务,长兴县建设管理网站,做办公设备网站我们从网上看到很多#xff0c;升级到重量锁的时候不会降级#xff0c;再来线程都是重量级锁 今天我们来实验一把真的是这样的吗
1.首选导入Java对象内存布局的工具库#xff1a; dependencygroupIdorg.openjdk.jol/groupIdartifactIdjol-…我们从网上看到很多升级到重量锁的时候不会降级再来线程都是重量级锁 今天我们来实验一把真的是这样的吗
1.首选导入Java对象内存布局的工具库 dependencygroupIdorg.openjdk.jol/groupIdartifactIdjol-core/artifactIdversion0.14/version/dependency2.代码
public class Test {static Object LOCK;public static void main(String[] args) throws InterruptedException {LOCK new Object();System.out.println(无锁的时候对象布局: ClassLayout.parseInstance(LOCK).toPrintable());IntStream.rangeClosed(1, 4).forEach(i - {getLOCK();});Thread.sleep(3000L);System.out.println(无竞争之后此时对象布局: ClassLayout.parseInstance(LOCK).toPrintable());getLOCK();}public static void getLOCK() {new Thread(() - {try {synchronized (LOCK) {System.out.println(线程[ Thread.currentThread().getName() ] 重量级锁状态对象布局: ClassLayout.parseInstance(LOCK).toPrintable());}} catch (Exception e) {e.printStackTrace();}}).start();}
}3.结果
4.结论 从实验我们可以得知升为重量级锁后并不会一直是重量级锁 一开始没有竞争的时候是无锁然后四个线程来竞争的时候是重量级锁释放锁之后又是无锁再来一个线程变为轻量级锁