- 浏览: 459440 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
[size=small]
同步容器类在执行每个操作期间都持有一个锁。在一些操作中,例如 HashMap.get 或List.contains, 可能包含大量的工作;当遍历散列桶或链表来查找某个特定的对象时,必须在许多元素上调用equals(equals本身还包含一定的计算量)。 在基于散列的容器中,某些情况下,某个糟糕的散列函数还会把散列表变成现行链表。当遍历很长的链表并且在某些或者全部元素上调用equals方法时, 会话费很长的时间,而其他线程在这段时间内都不能访问该容器。 与HashMap 一样,ConcurrentHashMap 也是一个基于散列的Map,但他使用了完全不同的加锁策略来提供更高的并发 性和伸缩性 ConcurrentHashMap 并不是将每个方法都在同一个锁上同步并使得每一次只能有一个线程访问容器,而是使用一种力 度更细的加锁机制来实现更大成都的共享, 这种机制称为分段锁(Lock Striping),在这种机制中国,任意数量的读取线程可以并发的访问Map,执行读取操作的 线程和执行写入操作的线程可以并发的访问Map, 并且一定数量的写入线程可以并发的修改Map。ConcurrentHashMap 带来的结果是,在并发访问环境下将实现更高 的吞吐量,二期单线程环境中只损失非常小的性能。 ConcurrentHashMap 与其他并发容器一起增强了同步容器类:他们提供的迭代器不会抛出ConcurrentModificationException , 因此不需要在迭代的过程中对容器加锁。 COncurrentHashMap 返回的迭代器具有弱一致性,而并非"及时失败"。 弱一致性的迭代器可以容忍并发的修改,当创建迭代器时会遍历已有的元素,并可以在迭代器被构造之后将修改操作反映给容器。 尽管有这些改进,但仍然有一些需要权衡的因素。对于一些需要在整个Map上进行计算的方法,例如size 和isEmpty, 这些方法的语义被略微减弱了以反映容器的并发特性。由于size返回的结果在计算时可能已经过期了,他实际上只是一个估值,因此允许size返回 一个近似值而不是一个精确值。这虽然看上去让人不安,但实际上size和isEmpty这样的方法在并发环境下用的很少,因为他们返回的值总在不断变化,因此, 这些操作的需求被弱化了,以换取其他更重要操作的性能优化。包括get/put/containsKey/remove等。 在ConcurrentHashMap 中没有实现对Map加锁以提供独占访问,在hashtable 和synchronizedMap 中,获取Map的锁能防止其他线程访问这个Map。 在一些不常见的情况下需要这种功能,例如通过原子方式添加一些映射,或者对Map迭代若干次并在此期间保持元素顺序相同。然而,总体来说这种权衡还是合理的 因为并发容器的内容会持续变化。 与Hashtable 和 synchronizedMap 相比,ConcurrentMap 有这更多的优势和更少的劣势,因此在大多数情况下,用ConcurrentHashMap来代替Map 能进一步提高代码的可伸缩性。只有当应用程序需要加锁Map以独占访问时,才应该放弃使用ConcurrentHashMap.[/size]
发表评论
-
java 多线程操作数据库 及 静态bean注入
2018-01-09 10:47 909package com.robustel.rlink.de ... -
Amino 框架简介
2014-10-17 11:30 1425对数据加锁是实现多线程的一种策略,但是加锁无疑会增加系 ... -
Java 重入锁(ReentrantLock)和内部锁(synchronized)
2014-10-16 15:44 1589ReentrantLock 和 synchronize的 ... -
Java 锁分离
2014-10-16 15:35 1330读写锁思想的延伸就是锁分离。读写锁根据读写操作功能上 ... -
java 高性能运算-- 双端队列
2014-10-15 16:04 1040JDK 1.6中 提供了一种双端队列,简称 Dequ ... -
java 高性能运算--并发队列
2014-10-15 15:33 2485JDK 提供了两套并发队列的实现,一个是以 Conc ... -
并发模式下的单例创建
2014-09-29 16:20 783单例模式的创建 分为 ... -
Java 同步集合的应用
2014-09-14 23:45 0Java 同步集合的应用 -
java 阻塞队列的应用
2014-09-14 23:44 0java 阻塞队列的应用 -
java 多线程集合
2014-09-14 23:28 0java 多线程集合 -
java Exchanger 线程数据交换
2014-09-14 22:56 0java Exchanger 线程数据交换 -
java CountDownLatch 实例
2014-09-15 18:07 844Java的concurrent包里面的CountDownLat ... -
java 多线程之 CyclicBarrier
2014-09-13 19:25 814CyclicBarrier (周期障碍)类可以帮助同步,它允许 ... -
java CyclicBarrier 循环阻塞
2014-09-12 22:43 432java CyclicBarrier 循环阻塞 -
java 多线程的锁消除
2014-09-12 18:31 1241Java 中使用同步 来保证数据的安全性,但是对于一些明显不会 ... -
java锁的种类以及辨析(一):自旋锁
2014-09-12 16:22 1627Java的多线程安全是基于Lock机制(或者隐式锁synchr ... -
Java锁的种类以及辨析
2014-09-12 15:15 1573锁作为并发共享数据,保证一致性的工具,在java平台有多种实现 ... -
java Semaphore 信号量详解和实例
2014-09-12 11:51 2146生产者线程用于往链表里添加节点,数个工作线程从链表取出节点并处 ... -
4个线程,2个每次加1,两个每次减1
2014-09-01 23:44 843package threadTest; public ... -
线程范围内的共享数据 ThreadLocal 分析与详解
2014-08-30 19:21 808Java 线程范围内的数据共享机制,需要解决的问题是 : 多 ...
相关推荐
Java 并发集合:ConcurrentHashMap 和 BlockingQueue Java 并发集合是 Java 语言中的一种高级hread-safe 集合框架,用于在多线程环境中实现高效、安全的数据存储和访问。其中,ConcurrentHashMap 和 BlockingQueue ...
- **JDK 7及更高版本的新特性**:例如Fork/Join框架、Parallel Streams等,这些都是Java并发编程的最新进展。 随书附带的`concurrentbook`和`concurrentbook-jdk7`文件夹可能包含了与上述知识点对应的示例代码,...
第二章可能深入介绍了Java并发工具类,如BlockingQueue(阻塞队列)和ConcurrentHashMap(并发哈希映射)。BlockingQueue在多线程间实现高效的数据传递,它通过阻塞等待或抛出异常的方式确保线程安全。...
总的来说,ConcurrentHashMap是Java并发编程中的重要组件,通过高效的并发控制策略和优化的数据结构,实现了在高并发场景下的高效并发访问。了解并掌握其原理对于提升Java并发编程能力至关重要。
《实战Java高并发程序设计》是一本专注于Java并发编程实践的书籍,随书代码提供了大量示例,帮助读者深入理解并掌握在实际开发中如何处理高并发场景下的问题。本书的核心知识点涵盖了Java并发编程的基础理论、核心...
5. **J.U.C框架**:Java并发 utilities (J.U.C) 框架是Java并发编程的重要组成部分,书中会介绍如何利用这个框架来提升并发性能和代码的可读性。 6. **性能调优**:在高并发场景下,性能优化是必不可少的。可能涵盖...
《实战Java高并发程序设计》是一本专注于Java并发编程的经典文献,它深入浅出地讲解了如何在Java环境中处理高并发场景。这本书是PDF格式,包含详细的目录,方便读者快速定位到所需的知识点,是Java开发者提升并发...
《Java高并发程序设计》是一本深入探讨Java平台上的并发编程技术的专业书籍,由葛一鸣等人编著。这本书旨在帮助读者理解并掌握在高并发环境下编写高效、稳定且可扩展的Java应用程序的关键技巧和最佳实践。以下是该书...
总结来说,`ConcurrentHashMap`是Java并发编程中的核心组件,它的设计理念和实现方式随着时间的推移不断演进,以适应更高的并发需求和性能优化。理解和掌握其工作原理对于编写高性能并发代码至关重要。
### Java源码剖析-...综上所述,`ConcurrentHashMap`作为Java并发编程中的一个核心组件,通过对`Segment`和`HashEntry`等数据结构的有效利用,以及对读写操作的优化处理,显著提升了多线程环境下的数据访问效率。
在Java编程领域,高并发处理是一项至关重要的技术,特别是在构建大型、高性能的互联网应用时。本文将基于"java 高并发解决思路"这一主题,深入探讨相关知识点,并结合"高并发web架构.pdf"文档中的实例进行阐述。 1....
首先,"Java线程并发面试题87.pdf"很可能包含了87个关于Java并发的常见面试问题,这些问题涵盖了线程基础知识、同步机制、线程池、死锁避免与解决、并发集合类的使用等多个方面。例如,可能会讨论Java中如何实现线程...
《Java并发编程实践》是Java开发者深入理解并发编程的重要参考资料,尤其对于想要提升多线程应用设计和性能优化技能的程序员来说,这本书提供了丰富的实践经验和深入的理论知识。以下是根据提供的章节内容概述的一些...
Java高并发编程是Java开发中的一个关键领域,尤其在大型分布式系统、互联网应用以及服务器端开发中至关重要。...这份"实战Java高并发程序设计"文档将是你宝贵的参考资料,帮助你在Java并发领域不断精进。
总结起来,Java并发编程中的并发容器,尤其是ConcurrentHashMap,通过巧妙的设计和高效的并发机制,如 CAS 操作和synchronized的使用,实现了线程安全且高性能的键值存储。在面临高并发场景时,ConcurrentHashMap...
这份"java-java面试题库整理-基础-JVM-线程并发-框架等.zip"文件提供了一个全面的复习资源,帮助求职者准备Java相关的面试。 1. **Java基础知识** - 类与对象:Java是一种面向对象的语言,了解类的定义、构造器、...
Java并发编程是Java开发者必须掌握的关键技能之一,尤其是在开发高性能、多线程的应用时。本教程“java并发编程-从入门到精通”旨在帮助你深入理解这个领域,并逐步提升你的编程能力。 首先,我们要理解Java并发的...
最后,本书还涵盖了Java并发编程的最新发展,如Fork/Join框架和Parallel Streams,这些是Java 7及以后版本引入的新特性,能够帮助开发者充分利用多核处理器的优势,编写出高性能的并行代码。 总而言之,《JAVA并发...
7. **J.U.C(Java并发工具包)**:这部分将详细介绍`java.util.concurrent`包中的各种工具类,如`Future`、`CompletableFuture`以及`ForkJoinPool`和`RecursiveTask`,它们是Java 7引入的并发处理框架,用于并行计算...