Set<Object> set = Sets.newConcurrentHashSet();
for (int i = 0; i < 100; i++) {
new Thread(() -> {
int n = ThreadLocalRandom.current().nextInt(100);
if (n > 50) {
set.add(n);
} else {
set.remove(n);
}
log.info(String.valueOf(set));
}).start();
}
好处:如果在多线程下访问,普通的HashSet则会出现 “并发修改”的异常,线程安全的Set下则不会出现。