您的位置:首页 > 国内新闻

如何优化Java技术能力 高并发锁实现方法有几种

时间:2020-02-01

如何优化Java技术能力?实现高并发锁有多少种方法?高并发性通常指许多用户同时访问相同的应用编程接口或。高并发性随着分布式系统的出现而出现,是Java工程师必须掌握的技能之一。接下来,我将与您分享高并发锁的实现方法。

1和乐观锁定

乐观锁定使用读取不冲突、写入冲突以及读取比写入更频繁的场景。

引用代码:

public object get(object obj){

object val=null;

if(val=map . get(key)==null){

//判断

synchronized(map){

if(map . get(key)==null){

set some value当map值为null时;

返回map.get(密钥);

返回map.get(密钥);

返回map.get(密钥);

返回map.get(密钥);

返回map.get(密钥);

}

乐观地认为读取时不会有冲突,写入时会添加锁。因此,解决的应用场景是阅读比写作大得多。

2,String.intern

乐观锁定不能很好地解决大量写冲突的问题,因为在许多情况下,锁定只针对某个用户或订单。但是,由于网络问题,用户创建会话的请求和后续请求可能同时到达,并行线程将优先处理后续请求,这就产生了行锁和数据库表锁的概念。显然,行锁的并发性远远高于表锁。String.intern是该方法的具体实现。

3。类ConcurrentHashMap

String.inter的缺点是,类String保持字符串池位于JVM perm区域。如果用户太多,放在字符串池中的字符串是不可控的,这可能会导致OOM错误或太多fullgcs。我们如何在降低锁粒度的同时控制锁的数量?您可以学习ConcurrentHashMap的方法,并将要锁定的对象分成多个桶,每个桶都添加一个锁。

类字符串维护一个字符串池。当调用intern方法时,如果池中已经包含一个等于该字符串对象的字符串,该字符串由equals(Object)方法确定,则返回池中的字符串。当字符串相同时,总是返回相同的对象,从而锁定相同的用户。因为粒度限于特定用户,所以系统实现了最大并发性。

  • 友情链接:
  • 鄢陵农业网 版权所有© www.freesignartwork.com 技术支持:鄢陵农业网| 网站地图