深入剖析synchronized的实现原理,并模拟JVM的实现

跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。

作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书、写作和运动,擅长篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚开源,崇尚技术自由,更崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》。

关于synchronized

前面已经有一个章节介绍了synchronized互斥锁,本节将继续深入剖析它的实现原理。

synchronized关键词是Java语言为开发者提供的同步工具,可以看成是一种语法糖,它实际上要解决的问题就是多线程并发执行过程中数据同步的问题。比起其它编程语言(比如C++),在处理同步问题时则需要自己进行锁处理,从这点上看Java提供的这个关键词确实很方便。

在Java中我们通过synchronized来指定同步块,从而能在该指定块中避免数据竞争问题。实际上对方法进行声明也是有一个对应的同步块范围,而且在指定同步块时会有一个对应的对象,该对象充当一个锁,同一时间只有一个线程能进入到锁中,其它线程必须等待锁里面的线程出来以后才能依次进入。

synchronized关键词

互斥锁语义

synchronized实现的同步语义是互斥锁,即对于某个锁来说,任意时刻只能有一个线程获得该锁。通过下面的例子来理解互斥,其中定义了一个synchron

猜你喜欢

转载自blog.csdn.net/wangyangzhizhou/article/details/104308050