1.public class javaThreadTest implements Runnable {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
@Test
public void threadtest() {
map.put("test", 0);
for (int i = 0; i < 10000; i++) {
new Thread(this).start();
}
}
public void run() {
map.put("test", map.get("test") + 1);
System.out.println("map.value::::::::" + map.get("test"));
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
@Test
public void threadtest() {
map.put("test", 0);
for (int i = 0; i < 10000; i++) {
new Thread(this).start();
}
}
public void run() {
map.put("test", map.get("test") + 1);
System.out.println("map.value::::::::" + map.get("test"));
}
打出的数据不是递增的
在

本文讨论了在高并发场景下使用ConcurrentHashMap时需要注意的问题。通过两个示例展示了如何正确地进行并发更新操作,以避免数据不一致。第一个例子中,由于未遵循原子操作,导致数据可能被覆盖。而第二个例子通过使用AtomicInteger解决了这个问题,确保了在多线程环境下数据的正确递增。
最低0.47元/天 解锁文章
167万+

被折叠的 条评论
为什么被折叠?



