use java.util.concurrent.ConcurrentHashMap