测试 hashmap hashtable Collections.synchronizedMap 多线程并发安全
// private static Hashtable<String,Integer > map = new Hashtable<String, Integer>();
// private static Map<String,Integer > map = new HashMap<String, Integer>();
private static Map<String,Integer > map = Collections.synchronizedMap(new HashMap());
public static void main(String[] args) throws InterruptedException {
map.put("key", 0);
ThreadA threadA=new ThreadA();
ThreadB threadB=new ThreadB();
threadA.start();
threadB.start();
//这里等待线程结束后,重置共享变量,以使验证结果的工作变得简单些.
threadA.join();
System.out.println(map.get("key"));
for (int i = 0; i < 2000; i++) {
if(!String.valueOf(i).equals(String.valueOf(map.get(String.valueOf(i))))){
System.err.println(String.valueOf(i)+":"+map.get(String.valueOf(i)));
}
}
}
static class ThreadA extends Thread {
int kk = 0;
public void run() {
for (int i = 0; i < 1000; i++) {
map.put(""+i,i);
}
}
}
static class ThreadB extends Thread {
public void run() {
for (int i = 1000; i < 2000; i++) {
map.put(""+i,i);
}
}
}
本文通过一个Java示例程序演示了如何使用synchronizedMap确保多线程环境下的并发安全。程序创建了两个线程,分别向共享的同步映射表中插入不同范围的数据,最终验证了数据的一致性和完整性。

2124

被折叠的 条评论
为什么被折叠?



