其中askedCount 是静态变量,多线程访问导致askedCount 结果不对,因为静态变量再被多个线程修改时其实是修改的同一个变量
导致 在返回前值被修改。
改正方式是 把askedCount 声明成静态变量。
public static Long getAskedCount() {
String beginTime;
Date beginDate = new Date();
askedCount = -1L;
if (GameDynamicElement.getAskTime() != null) {
SimpleDateFormat df = null;
df = new SimpleDateFormat("yyyy-MM-dd");
beginTime = df.format(new Date());
beginTime = beginTime + " " + GameDynamicElement.getAskTime();
} else {
beginTime = null;
}
if (StringUtils.isNotEmpty(beginTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
beginDate = sdf.parse(beginTime);
} catch (ParseException e) {
e.printStackTrace();
}
// 时差
askedCount = System.currentTimeMillis() - beginDate.getTime();
if (askedCount > 0) {
askedCount = (askedCount / (GameDynamicElement.getSpaceTime() * 1000)) + 1;
}
}
return askedCount;
}