測試 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); } } }