HashMap,HashSet,ArrayList都不具备线程安全。可以用 Set s=Collections.synchronizedSet(new Hashset<...>());Map m=Collections.synchronizedMap(new HashMap<...>());List l=Collections.synchronizedList(new ArrayList<...>());获得被同步后的版本。也可以用ConcurrentHashMap等同步工具代替 ...
这样使用是有问题的。ConcurrentMap能够保证每一次调用(例如一次putIfAbsent)都是原子操作,不受多线程影响,但并不保证多次调用之间也是原子操作。以上实现的GetKeyBM方法中,ConcurrentMap的方法被调用了许多次,不同线程之间必然存在着竞争关系,导致最终结果不正确。现在的目标是,将下面描述的这一系列操作...
2.聊聊项目(面试官很想聊项目,但是我同步到GitHub里,就没聊)3.线程池的原理4.Java中的阻塞队列5.Redis缓存预热方案6.RPC远程调用7.MySQL三层缓存介绍一下8.HashMap介绍一下,线程安全吗?如果想用线程安全的用哪一个?和HashMap区别9.线程的几种实现方式(到此面试官说感觉你基础还可以,其实想说除了基础其他掌握...