减少锁竞争的两种方式JAVA
2021/7/27 22:06:05
本文主要是介绍减少锁竞争的两种方式JAVA,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 缩小锁的范围(快进快出)
在并发程序中,对可伸缩性的主要威胁就是独占方式的资源锁
有三种方式可以降低锁的竞争程度,减少锁的持有时间,降低锁的请求频率,使用带有协调机制的独占锁
(1) 缩小锁的范围
public class AttributeStore{ private final Map<String,String> attribute = new HashMap<>(); public synchronized boolean userLocationMatched(String name,String regex){ String key = "users"+name String location = attributes.get(key); if(location == null){ return false; }else{ return Pattern.matches(regex,location); } } } public class BAttributesStore{ ... public boolean userLocationMatches(String name,String regex){ String key = "users"+name; String location; synchronized(this){ location = attrinutes.get(key); } if(location == null){ return false; }else{ return Pattern.matches(regex,location); } } } 减小锁粒度 ```java public class ServerStatus{ public final Set<String> users; public final Set<String> queries; ... public synchronized void addUser(String u){ users.add(u); } public synchronized void addQuery(String q){ queries.add(q); } } public class ServerStatus{ public final Set<String> users; public final Set<String> queryies; ... public void addUser(String u){ synchronized(users){ users.add(u); } } public void addQuery(String q){ synchronized(queries){ queries.add(q); } } }
这篇关于减少锁竞争的两种方式JAVA的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南
- 2024-11-20负载均衡教程:新手入门必备指南
- 2024-11-20微信支付教程:新手入门必备指南
- 2024-11-20系统部署教程:轻松入门与实践
- 2024-11-20入门级中间件教程:轻松掌握中间件基础知识