浅谈synchronized

  多线程并发访问对象或者变量时要保证线程安全就要使用关键字 synchronized 。

  提到synchronized,就不得不提另外一个同胞兄弟 lock 了,先对他们做下比较:

  1,lock覆盖了synchronized 的语义和内存性,但是有其他扩展功能,比如-定时锁等候

       使用synchronized来锁定一个对象,其他想要申请这个对象的线程只能无限期等待下去直到对象被释放;而使用lock ,可以配置一个等候时间,到了等候时间还是没有申请到          对象就会中断等待去做其他事情。

  2,synchronized是由jvm层面来调度,而lock是由程序控制,也就是说lock必须由程序来释放,这就要求每一个lock后面都要执行 finally(unlock)


  3,在资源竞争不紧张时候,使用synchronized性能比较高,而资源紧张时候,使用synchronized的性能下降几十倍,而lock的使用性能不会有变化。

  

  由于synchronized是java50个关键字之一,属于native方法,即它的底层实现源码已经不是java了,有兴趣的童鞋也可以去看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值