面试官:如果让你优化一下锁,会从哪些方面考虑?

  • 如果是数据库的锁,在同一个库中,因此行锁还是大家一起共享的,那么采用主从库,做读写分离,从库做读操作,基本不用加锁,主库做写操作,使用innodb引擎,使用行锁增大写并发,这样在读数据时,就无需再等待锁被释放了,不过在主库修改完数据后,要主从同步,以免读到脏数据。
  • 使用分段加锁,这可以参考下ConcurrentHashMap,减小锁粒度,增大并发,不过不要将锁的粒度太过细化,不然可能会出现线程的加锁和释放锁的次数过多,效率可能还不如一次加一把大锁
  • 要减小锁持有的时间
  • 多个线程要尽量以相同的顺序去获取资源,讲白了就是使用公平锁
发布了321 篇原创文章 · 获赞 345 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/105364484