您的位置:首页 > 其它

锁在应用层的优化思路

2015-10-12 15:38 477 查看
减少锁的持有时间
减小锁粒度
比如:ConcurrentHashMap中增加一个表项,并不是将整个HashMap加锁,而是首先根据hashcode得到该表项应该被存放到哪个段中,然后对该段加锁,并完成put()操作。在多线程环境中,如果多个线程同时进行put()操作,只要被加入的表项不存放在同一个段中,则线程间便可以做到真正的并发。
锁分离
依据应用程序的功能特点,将一个独占锁分成多个锁。如:LinkedBlockingQueue中使用ReentrantLock定义两个锁,takeLock和putLock,实现了取数据和写数据的分离。
锁粗化
如果对同一个锁不停地进行请求、同步和释放,其本身也会消耗系统宝贵的资源,反而不利于性能的优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: