import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
public class Main {
static ConcurrentHashMap table = new ConcurrentHashMap();
public static void main(String[] args) throws InterruptedException {
table.put("1", "1");
System.out.println("loading success");
new Thread() {
@Override
public void run() {
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
table.remove("1");
}
}.start();
for(Iterator it=table.entrySet().iterator();it.hasNext();) {
Thread.sleep(2000);
System.out.println("hahahah");
Map.Entry entry=(Map.Entry)it.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
table.remove(entry.getKey());
}
System.out.println("main thread compleat");
}
}
以上这段代码在惠普UNIX上面的结果比较特殊,是:
BimsInt2[/]#java Main
loading success
hahahah
1
null
main thread compleat
但是在windows、solaris和linux上面的结果是:
loading success
hahahah
1
1
main thread compleat
另:java里面的new java.util.Date()在惠普UNIX上面也比较特殊,具体不细说了。
分享到:
相关推荐
### Java源码剖析-...综上所述,`ConcurrentHashMap`作为Java并发编程中的一个核心组件,通过对`Segment`和`HashEntry`等数据结构的有效利用,以及对读写操作的优化处理,显著提升了多线程环境下的数据访问效率。
与传统的线程安全哈希表`HashTable`相比,`ConcurrentHashMap`在设计上采用了更加先进的技术,以减少锁的竞争,从而提高并发性能。 #### 二、线程安全机制 `ConcurrentHashMap`的线程安全性主要通过引入“分段锁”...
java本地缓存ConcurrentHashMap
在Java 7之前,ConcurrentHashMap主要依赖于Segment上的ReentrantLock来实现同步。每个Segment都有一个内部锁,当进行写操作时,会锁定对应Segment,读操作则不需要锁定。而从Java 8开始,ConcurrentHashMap改用CAS...
为了避免在扩容过程中锁住整个表,ConcurrentHashMap采用了特殊的扩容机制,确保即使在扩容过程中也能支持并发读写操作。 #### 四、应用场景 **1. 多线程环境下的数据共享** 当多个线程需要并发地访问和修改一个...
通过以上分析,我们可以看到ConcurrentHashMap如何通过锁分段技术来解决HashMap在并发环境下的线程安全问题,并通过巧妙的设计减少线程间锁的竞争,从而提升性能。因此,在设计需要高并发性能的程序时,...
这是因为ConcurrentHashMap使用的是链表存储结构,当两个键的哈希值相同时,ConcurrentHashMap将会将这两个键存储在同一个链表中,从而导致死循环的问题。 这个问题的解决方案是使用JDK1.8中ConcurrentHashMap的另...
总的来说,JDK 1.8中的`ConcurrentHashMap`在`computeIfAbsent`方法和扩容逻辑的结合上存在一个设计缺陷,可能导致线程在尝试插入新值时陷入死循环。在后续版本中,这个问题被识别并修正,提高了`ConcurrentHashMap`...
Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~
源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556
ConcurrentHashMap 广泛应用于 Java 开发中,例如,在大型的 Web 应用程序中,ConcurrentHashMap 可以用来存储用户的 Session 信息,在分布式系统中,ConcurrentHashMap 可以用来存储分布式锁等。
ConcurrentHashMap 是为了应对 HashMap 在并发环境下不安全而诞生的,ConcurrentHashMap 的设计与实现非常精巧,大量的利用了 volatile,final,CAS 等 lock-free 技术来减少锁竞争对于性能的影响。...
`ConcurrentHashMap`在设计上解决了HashMap在并发环境下的线程安全问题。在JDK1.7版本,它采用了分段锁(Segment)的设计,将数据分为多个段,每个段都有自己的锁,这样可以允许多个线程并发访问不同的段,提高并发...
而JDK1.8之前的ConcurrentHashMap则引入了Segment分段锁,每个Segment相当于一个小的HashMap,这样可以在一定程度上提高并发性,但仍然存在锁粒度过粗的问题。 JDK1.8的ConcurrentHashMap改进了这一设计,它不再...
在Java编程语言中,`HashMap`和`ConcurrentHashMap`是两种非常重要的数据结构,它们都属于`java.util`包,用于存储键值对。本文将深入解析这两个类在Java 7和8版本中的实现原理、特点以及使用场景。 首先,`HashMap...
而ConcurrentHashMap是线程安全的HashMap实现,它在Java 7中采用了分段锁(Segment)的设计,每个Segment实际上是一个小型的HashMap,通过锁来确保并发安全。put过程包括: 1. 确保Segment初始化,如果需要则创建新...
为了避免这种情况,`ConcurrentHashMap`会在必要的时候重新哈希,以确保数据能够更均匀地分布在各个段中。 #### 五、示例代码分析 以下是一些关键的示例代码: ```java /** * The segments, each of which is a ...
ConcurrentHashMap 本质上是一个 HashMap,因此功能和 HashMap 一样,但 ConcurrentHashMap 在 HashMap 的基础上,提供了并发安全的实现。并发安全的主要实现是通过对指定的 Node 节点加锁,来保证数据更新的安全性...
在Java面试中,经常会问到关于数据结构如HashTable和ConcurrentHashMap的细节,以及它们在并发编程中的使用。 最后,文档中出现了诸如“2399”、“1328”、“2645”、“2633”等数字,很可能是引用了一些代码片段或...