Collections.synchronizedMap(new HashMap<Integer, byte[]>()) new ConcurrentHashMap <Integer, byte[]> () Is the later one always better than the first one? I personally think so, but are there any traps in it?