证明synchronized方法使用的是this锁

2019/01 11 15:01

synchronized方法使用的this锁来保证并发的安全性的。这个概念应该面试的时候被问过很多次。我突然想如何证明呢?我对Java底层的C语言代码无能为力,所以想了一个其他的方法。

在一个实现Runnable接口的类上,定义一个全局变量count,再创建一把变量锁。在run方法中使用两种实现线程安全的方法:synchronized代码块和synchroniezed方法。先去各自使用不同的锁进行测试,看共享变量计算是否出现错误。然后这两种方法都使用this对象锁(synchronized方法默认使用this对象锁),再次查看共享变量计算是否还会出现计算错误,显然不会存在!

既然要测试锁,必然要涉及到竞争,涉及到竞争必然是多线程!

 

代码如下:

 

 结论:

两种实现线程安全的方法,第一种代码块的方式使用this对象锁。从运行的结果证明两种方式使用的实现了对同一把锁的竞争,进而证明synchronized方法默认使用的是this对象锁。

 

大家如果感觉在下整理的还算可以,请随意打赏在下,谢谢

(注:自愿,自愿,自愿 总要的事情说三遍)

---------------------------------------------------------

微信公众号“程序员之路”,路漫漫其修远兮,吾将上下而求索!

轻轻按住下面的它,让我们结伴,共同成长!

 

 

 

--转载请注明: https://www.guangboyuan.cn/%e8%af%81%e6%98%8esynchronized%e6%96%b9%e6%b3%95%e4%bd%bf%e7%94%a8%e7%9a%84%e6%98%afthis%e9%94%81/

发表回复

(必填)