关于 static 块是否是同步的

要理解 synchronized 关键字,可以先看看这篇文章:

 

http://www.learndiary.com/archives/diaries/2910.htm

 

本文是对该文的补充。

 

作者在最后对类中的 static 块是否是同步的抱有疑惑。其实想鉴定也不难。通过编译代码我们就知道,synchronized static {} 这样写是不允许的。为什么呢?因为 static 块的执行属于类加载的一部分。类加载这个动作,按道理说应该是同步的。如果是这样的话,static 块就已经同步了,不需要再加 synchronized。

 

光是猜想还不行,要写程序来验证。写验证程序也是锻炼思维的手段,某些初学者懒就懒在这里。只要你肯下功夫自己动手而不是到处发帖子问,你就能做到比别人强。

 

 

执行结果:

Thread 6927154 enters static block.    -- 后面等了两秒才继续输出
TestClass object created in thread 3043939
TestClass object created in thread 6927154
TestClass object created in thread 22540508
TestClass object created in thread 3043939

 

果然如此,static 块本身是同步的。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值