测试 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);
}
}
}