Java6对synchronized的优化:锁升级过程
发布时间
阅读量:
阅读量
前言
在回顾synchronized相关知识时,通常会将其与lock进行比较,并认为它属于一种效率较低的重量级锁,使用起来不如lock灵活便捷。然而实际上,synchronized作为Java语言中历史悠久的重要关键字,被广泛应用于许多JDK基础代码之中,这也体现了Java开发团队对这一“非正式成员”的认可与青睐。为提升其性能表现,开发人员早在Java6版本中便为其量身定制了一套优化机制。
一、synchronized关键字应用分析
- 当将同步机制应用于方法时,所锁定的对象即为该方法所属的实例,从而避免多个线程同时调用该对象的同步方法;
- 若将同步机制应用于静态方法,则锁定的对象为该类对应的Class对象,此举可防止多个线程同时执行该类的所有同步方法,适用于该类的所有实例;
- 当同步机制作用于代码块时,锁定的对象为包含该代码块的实例,以此阻止多个线程同时进入并执行这段代码。
二、JVM对synchronized的实现方式
- 代码块同步:借助 monitorenter 与 monitorexit 指令达成
- 同步方法:采用 ACC_SYNCHRONIZED 进行修饰
三、Java对象头(存储锁类型)
在进行锁升级操作之前,需要首先掌握Java对象头的相关知识,正是对象
全部评论 (0)
还没有任何评论哟~
