关于synchronized以及ReetrantLock、ReentrantReadWriteLock的选择

synchronized和ReetrantLock的区别

  synchronized是java的内置锁,相对于ReetrantLock使用更加方便,如果实现自己的Lock,可以继承ReetrantLock来实现,在性能上,两个差异不是特别大。ReetrantLock仅仅高一点。
  ReetrantReadWriteLock和上面两个相比,性能优越主要体现在读方面,因为多个线程同时读的时候是共享锁,所以多个线程可以同时进行读操作。如果读操作是简单的读取一个变量的值,那么性能和synchronized以及ReetrantLock相比几乎一样,但是如果读操作是一个相对比较费时的操作,那么优势就会非常明显。

结论

  • 当读写频率几乎相等,而且不需要特殊需求的时候,优先考虑synchronized
  • 当需要定制我们自己的lock的时候,或者需要更多的功能(类似定时锁、可中断锁等待),我们使用ReetrantLock
  • 当很少的写操作,更多的读操作,并且读操作是一个相对耗时的操作,那么就是用ReetrantReadWriteLock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值