最近在面试中,被问到的一个题目,特意整理了下
废话不多说,直接上代码
static ConcurrentHashMap<String, AtomicLong> ipMap = new ConcurrentHashMap<>();
public static long getCount(String ip){
AtomicLong atomicLong = ipMap.get(ip);
if (atomicLong == null) {
synchronized (ip){
atomicLong = ipMap.get(ip);
if (atomicLong == null) {
atomicLong = new AtomicLong(0);
ipMap.put(ip,atomicLong);
}
}
}
return atomicLong.getAndIncrement();
}
public static void main(String[] args) {
for (int i = 0; i <100 ; i++) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(getCount("111111"));
}
}).start();
}
}

1638

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



