多线程下使用map进行统计

import java.util.concurrent.ConcurrentHashMap;

import com.google.common.util.concurrent.AtomicLongMap;

import com.jiuzhi.biz.adstat.util.ADStatReportUtil;

import com.jiuzhi.biz.frontwebad.model.ADStatReportBean;

public class ADStatReportData {

public static ConcurrentHashMap<String,AtomicLongMap<String>> map = new ConcurrentHashMap<String,AtomicLongMap<String>>();

//public static AtomicLongMap<String> map = AtomicLongMap.create();

public static void putData2Map(ADStatReportBean adReport)

{

String timeKey = ADStatReportUtil.getTimeKey(adReport);

AtomicLongMap<String> statMap = map.get(timeKey);

if(null == statMap)

{

synchronized(map)

{

if(!(map.containsKey(timeKey)))

{

statMap = AtomicLongMap.create();

map.putIfAbsent(timeKey, statMap);

}

else

{

statMap = map.get(timeKey);

}

//if(statMap==null)

//{

//System.out.println("statMap=null............");

//}

}

}

String key = ADStatReportUtil.getStatKey(adReport);

long count = statMap.incrementAndGet(key);

System.out.println(timeKey+"|"+key+"消息="+count);

}

}

猜你喜欢

转载自kuangtuzhm.iteye.com/blog/2272551