锁优化的方法

减少锁持有时间

锁优化的方法_第1张图片

减少锁粒度

  • 将大对象拆分成小对象,增加并行度,降低锁竞争。
  • ConcurrentHashMap允许多个线程同 时进入

锁分离

  • 根据功能进行锁分离
  • ReadWriteLock在读多写少时,可以提高性能。

锁消除

  • 锁消除是发生在编译器级别的一种锁优化方式。
  • 有时候我们写的代码完全不需要加锁,却执行了加锁操作。

锁粗化

通常情况下,为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽可能短,但是在某些情况下,一个程序对同一个锁不间断、高频地请求、同步与释放,会消耗掉一定的系统资源,因为锁的请求、同步与释放本身会带来性能损耗,这样高频的锁请求就反而不利于系统性能的优化了,虽然单次同步操作的时间可能很短。锁粗化就是告诉我们任何事情都有个度,有些情况下我们反而希望把很多次锁的请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗。
锁优化的方法_第2张图片

你可能感兴趣的:(java,数据库,开发语言)