Advertisement

Java6对synchronized的优化:锁升级过程

阅读量:

前言

在回顾synchronized相关知识时,通常会将其与lock进行比较,并认为它属于一种效率较低的重量级锁,使用起来不如lock灵活便捷。然而实际上,synchronized作为Java语言中历史悠久的重要关键字,被广泛应用于许多JDK基础代码之中,这也体现了Java开发团队对这一“非正式成员”的认可与青睐。为提升其性能表现,开发人员早在Java6版本中便为其量身定制了一套优化机制。

一、synchronized关键字应用分析

  1. 当将同步机制应用于方法时,所锁定的对象即为该方法所属的实例,从而避免多个线程同时调用该对象的同步方法;
  2. 若将同步机制应用于静态方法,则锁定的对象为该类对应的Class对象,此举可防止多个线程同时执行该类的所有同步方法,适用于该类的所有实例;
  3. 当同步机制作用于代码块时,锁定的对象为包含该代码块的实例,以此阻止多个线程同时进入并执行这段代码。

二、JVM对synchronized的实现方式

  1. 代码块同步:借助 monitorentermonitorexit 指令达成
  2. 同步方法:采用 ACC_SYNCHRONIZED 进行修饰

三、Java对象头(存储锁类型)

在进行锁升级操作之前,需要首先掌握Java对象头的相关知识,正是对象

全部评论 (0)

还没有任何评论哟~