并发编程- java中的锁:Synchronized的四种状态(无锁、偏向锁、轻量级锁、重量级锁)_王会举的博客-程序员秘密_java锁synchronized

技术标签: java  多线程  并发编程  

Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。

本文介绍的是Synchronized的四种锁状态.

1:什么是Synchronized?

Synchronized是java中的关键字,是一种同步锁。它修饰的对象有以下几种:(类, 方法, 代码块)

synchronized可以保证方法或代码块在运行时,同一时刻只有一个线程可以进入到临界区(互斥性)所以它也是排它锁,同时它还保证了共享变量的内存可见性。

在JDK1.6版本之前一直被称为''重量级锁'',但是在1.6之后进行了大量的优化. 主要包括为了减少获得锁和释放锁带来的性能消耗而引入的 偏向锁 和 轻量级锁 以及其它各种优化之后变得在某些情况下并不是那么重了.在线程冲突较少的情况下,可以获得和CAS类似的性能;而线程冲突严重的情况下,性能远高于CAS。

2:Synchronized的四种状态

 这四种状态是在jdk1.6之后引入的,分别为:(无锁->偏向锁->轻量级锁->重量级锁 ) 这几个状态会随着竞争情况逐渐升级。

1:无锁

无锁的特点就是修改操作在循环内进行,线程会不断的尝试修改共享资源。如果没有冲突就修改成功并退出,否则就会继续循环尝试。也就是CAS(CAS是基于无锁机制实现的)。

2.偏向锁

偏向锁是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁,降低获取锁的代价。

偏向锁只有遇到其他线程尝试竞争偏向锁时,持有偏向锁的线程才会释放锁,线程不会主动释放偏向锁。

3.轻量级锁

是指当锁是偏向锁的时候,被另外的线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,从而提高性能。

若当前只有一个等待线程,则该线程通过自旋进行等待。但是当自旋超过一定的次数,或者一个线程在持有锁,一个在自旋,又有第三个来访时,轻量级锁升级为重量级锁。

4.重量级锁

在轻量级锁状态下,如果有第三个来访时,就会自动升级成重量级锁

3:这些锁的优缺点

偏向锁 加锁和解锁不需要CAS操作,没有额外的性能消耗,和执行非同步方法相比仅存在纳秒级的差距 如果线程间存在锁竞争,会带来额外的锁撤销的消耗 适用于只有一个线程访问同步快的场景
轻量级锁 竞争的线程不会阻塞,提高了响应速度 如线程成始终得不到锁竞争的线程,使用自旋会消耗CPU性能 追求响应时间,同步快执行速度非常快
重量级锁 线程竞争不适用自旋,不会消耗CPU 线程阻塞,响应时间缓慢,在多线程下,频繁的获取释放锁,会带来巨大的性能消耗 追求吞吐量,同步快执行速度较长
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wang5701071/article/details/108770305

智能推荐

ASP.NET MVC入门视频教程_weixin_30376083的博客-程序员秘密

  自从09年三月份微软发布了ASP.NET MVC 1.0,已有超过百万的开发人员下载和使用,它的人气逐月递增。今年三月份发布了ASP.NET MVC 2.0,关于其特性、功能和下载这里不废话了。重点是下面的一些ASP.NET教程资源,:  一 ASP.NET MVC 文章推荐   ASP.NET MVC的在线文档:http://go.microsoft.com/fwli...

国家何时整治程序员的高薪现象???_qq_41268683的博客-程序员秘密

程序员求职简历,项目经验怎么写?免费修改简历、提供模板并内部推荐昨天,有一个网友后台问我:最近怎么样?听说要开始整治你们呢?我说:啥?我前两天刚刚说过我所在的业务和部门一切都还好。他说:不...

spark报错Error while instantiating 'org.apache.spark.sql.internal.SessionState'_In-spite-of的博客-程序员秘密

Exception in thread "main" java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.internal.SessionState'……………………Caused by: java.lang.reflect.InvocationTargetException...

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录_天剑含光的博客-程序员秘密_springboot整合cas

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录1.1 什么是单点登录1.2 什么是CAS1.3 CAS服务端部署1.template下载1.4 客户端搭建1.1 什么是单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。我们目前的系...

《Flutter 控件大全》第六十个:ListWheelScrollView_老孟Flutter的博客-程序员秘密

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。在展示大量数据的时候我们第一会想到使用ListView,如果你觉得ListView比较单一、...

母亲节祝福短信母亲节信息母亲节祝福语大全 - 健康程序员,至尚生活!_weixin_33924220的博客-程序员秘密

 妈:感谢您让咱们一家人吃的丰盛、穿的体面、乐的开怀,让我代表一家人向您说:母亲节快乐! 妈妈,感谢您!在我跌跌撞撞的时候,是您一直在支持着我。今天是您的节日,衷心祝您节日快乐! 妈妈,今天是一个您也许不会记得而我永远不会忘记的日子!妈妈:祝您母亲节快乐! 妈妈我感谢你赐给了我生命,是您教会了我做人的道理,无论将来怎么样,我永远爱您!在这属于您的节日里,祝您节日快乐,永远快乐! 你的爱,我...

随便推点

51Nod 1191 消灭兔子 (贪心+优先队列)_shiyicode的博客-程序员秘密

题目链接:消灭兔子题目大意 n个兔子,每个兔子都有一个血量b[i] m种箭(每种各一支),每种箭都有伤害值d[i]和价格p[i] 每个兔子只能被射一次,伤害值大于血量则死,每种箭只能用一次 问杀死所有兔子需要的最小价格为多少,若不能杀死,则No Solution m,n小于50000)思路 典型的贪心,每个兔子只能射一次,所以只能用伤害值大于其血量的箭,在此前提下,

/usr/bin/phpize 报错:Can't find PHP headers in /usr/include/php_one312的博客-程序员秘密

以下时centos7环境报错:执行/usr/bin/phpize时报以下错误:Can't find PHP headers in /usr/include/phpThe php-devel package is required for use of this command.解决办法,安装 php-develyum install php-devel然后再执行/usr/bin/p...

JavaScript练字游戏_pandaHe_Status的博客-程序员秘密

最近手痒,把一个有三种难度的练习打字得分的小游戏做了出来…css可以自己添加。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>

The '08 Open Source CMS Awards Finalists Are In_longware_新浪博客_龙威的博客-程序员秘密

PS:这是老外的,国内行情不一,参考一下波~PacktPublishing刚刚宣布2008届最佳开源CMS大赛各奖项下的决赛名单。去年,Drupal是综合大奖得主,将06年冠军 Joomla!推到第二位。今年 Drupal 和 Joomla均入选决赛名单,分属不同奖项。Packt 将于2008年10月31日开始公布最终获奖名单。开源CMS综合大奖决赛名单Dot...

CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一节_liyating__的博客-程序员秘密

来源:《Pro SQL Server Internals, 2nd edition》作者:Dmitri Korotkevitch美国佛罗里达州坦帕聚集索引设计注意事项每次更改聚集索引键的值时,都会发生两件事。首先,SQL Server移动行移动到聚集索引页链和数据文件中的不同位置。其次,它更新行id,这是聚集索引键。行id存储在所有非集群索引中,需要更新。就I/O而言,这可能非常昂...

推荐文章

热门文章

相关标签