关于java中synchronized的迷思,建议只作为函数修饰符使用

      讲到 java 中synchronized关键字的话,是一个临界区的标识符,java代码在多线程进入此区块的时间必须是串行的。

    以前在自己写一个培训文档中也讲过多线程应该是源于单线程,并行源于串行,简单的来说,可以认为所有从main开始,就生了万物!

     由于synchronized这个特性一些书籍或网页上文字介绍synchronized的使用尽可能地少和短,多线程经常走走停停,会降低多线程的效率。

      但是在这个减少使用的过程中,做到极端化,也是不可取的,它的具体表现就是在函数内的一部分使用synchronized括进一段代码。

     这样会使得代码段比较长时或是从函数的外界很难知道里面一些锁的使用,也比较难以有主动意识避免多线程中的“死锁”。

     如果将synchronized不管怎么样作为函数的修饰符,即使只是一个函数的一部分,那么就这一部分的代码可以抽取为一个类的方法,这样就可以在现在比较强大的IDE环境中,直接观察到函数的锁使用和提前发掘可能的死锁条件竞争。

   这种思考是对所维护的代码中屡出现死锁后,如何预防的一种设想,应该是一种升华的。从性能讲可能会低,但是从代码可维护上讲是值得的,大多数软件的性能问题,从来都不是最大的问题,最大的问题在于故障丛生和无法低成本维护。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值