2024年4月20日发(作者:)
java的synchronized的实现原理
x
一、Java的Synchronized实现原理
1、原理介绍
Synchronized关键字是Java语言中最常用的同步机制,它可以
保证在同一时刻,只有一个线程执行一个方法或者代码块,也就是可
以保证并发编程时数据的一致性。
Java中有两种形式的synchronized,一种是synchronized方法,
另一种是synchronized块。在synchronized方法中,要求它的参数
必须是对象,这个对象被称为同步监视器(Monitor),通过Monitor
来实现同步。在synchronized块中它的参数是对象,也可以是一个
类,而且不能为null,如果参数是一个类,则表示该类的所有对象
都具有相同的同步性,也就是说它们都共享一个Monitor。
Synchronized可以实现线程同步的原理是通过Monitor的机制
实现的,其具体实现原理如下:
2、Monitor的实现原理
(1)在java中,每个对象都包含一个Monitor,每个Monitor
只能被一个线程持有,在同一时刻,只能有一个线程持有该 Monitor。
(2)当一个线程执行到一个synchronized的代码块或者方法时
候,它会尝试获取该 Monitor,如果成功,则说明获取了该 Monitor,
否则,说明该 Monitor已经被其它线程持有,则线程应当等待,直
到其它线程释放该Monitor,线程才能继续执行。
- 1 -
(3)当一个线程执行完一个synchronized的代码块或者方法时
候,它会释放该Monitor,这时候其它线程就可以获取并使用该
Monitor,从而实现线程的同步。
三、总结
Synchronized关键字可以保证线程安全,可以实现线程间的同
步,它具有良好的性能。它的实现是通过Monitor的机制实现的,每
个对象都包含一个Monitor,当一个线程试图获取一个Monitor的时
候,如果该Monitor已经被另一个线程持有,则该线程需要等待,直
到该Monitor被释放,这样才能保证线程的安全。
- 2 -
发布者:admin,转转请注明出处:http://www.yc00.com/web/1713564300a2274041.html
评论列表(0条)