热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javamap锁_java中ConcurrentHashMap不能被加锁来执行独占访问??

我在看《java并发编程实践》,书中72页提到:由于ConcurrentHashMap不能被加锁来执行独占访问,因此我们无法使用客户端加锁

我在看《java并发编程实践》,书中72页提到:由于ConcurrentHashMap不能被加锁来执行独占访问,因此我们无法使用客户端加锁来创建新的原子操作。

d197833b2bf16b4c7d8a157fc0edeb49.png

1f68bd50ee230f8b95abaaeece3c2c31.png

中英文内容如上。

请问这句话怎么理解??我看过ConcurrenHashMap源码,也知道分段锁。但是这句话似乎不太对,无论是看中文还是看英文。然后我做了如下测试(测试这个就属于客户端加锁),JDK1.6:

javapublic class TestThread extends Thread {

private static ConcurrentHashMap map = new ConcurrentHashMap();

public void run(){

synchronized (map) {

for(int i&#61;0; i<10; i&#43;&#43;)

System.out.println("i:"&#43;i&#43;", thread:"&#43;Thread.currentThread().getName());

}

}

public static void main(String[] args) {

TestThread t &#61; new TestThread();

Thread t1 &#61; new Thread(t,"A");

Thread t2 &#61; new Thread(t,"B");

t1.start();

t2.start();

}

}

结果如下&#xff1a;

i:0, thread:A

i:1, thread:A

i:2, thread:A

i:3, thread:A

i:4, thread:A

i:5, thread:A

i:6, thread:A

i:7, thread:A

i:8, thread:A

i:9, thread:A

i:0, thread:B

i:1, thread:B

i:2, thread:B

i:3, thread:B

i:4, thread:B

i:5, thread:B

i:6, thread:B

i:7, thread:B

i:8, thread:B

i:9, thread:B

是我测试程序不对&#xff1f;&#xff1f;

网上也搜了一些&#xff0c;有很多对这句话提出质疑的&#xff0c;但似乎没有人回答特别靠谱的。

&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;更新分割线&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

我重新整理了一下问题&#xff1a;我理解的ConcurrentHashMap&#xff0c;从内部实现来讲&#xff0c;是不支持独占访问的。但是通过客户端加锁的方式&#xff0c;是可以保证原子操作性的&#xff0c;但是这种选择可能不是最好的。

书中“由于ConcurrentHashMap不能被加锁来执行独占访问&#xff0c;因此我们无法使用客户端加锁来创建新的原子操作”这句话&#xff0c;从描述上和逻辑上都是有问题的&#xff0c;我觉得。描述上&#xff0c;前半句感觉完全不对&#xff1b;逻辑上&#xff0c;由于-因此这个逻辑并不成立。



推荐阅读
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文探讨了如何高效地计算数组中和为2的幂的偶对数量,提供了从基础到优化的方法。 ... [详细]
  • 本文深入探讨了WPF框架下的数据验证机制,包括内置验证规则的使用、自定义验证规则的实现方法、错误信息的有效展示策略以及验证时机的选择,旨在帮助开发者构建更加健壮和用户友好的应用程序。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文将详细介绍如何使用Java编程语言生成指定数量的不重复随机数,包括具体的实现方法和代码示例。适合初学者和有一定基础的开发者参考。 ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
author-avatar
瓷娃娃2502929883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有