测试 hashmap hashtable Collections.synchronizedMap 多线程并发安全java
// 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); } } }