JAVA的静态方法的运算_java – 用于计算逾期天数的静态方法的并发访问

我有一个带有以下签名的静态方法:

private static volatile SimpleDateFormat payDayFormat = new SimpleDateFormat("yyyyMMdd");

public static int overdueDays(String repayDay){

try {

Date billDate = payDayFormat.parse(repayDay);

Calendar startDate = Calendar.getInstance();

startDate.setTime(billDate);

Calendar endDate = Calendar.getInstance();

long end = endDate.getTimeInMillis();

long start = startDate.getTimeInMillis();

Long days = TimeUnit.MILLISECONDS.toDays(Math.abs(end - start));

return days.intValue();

} catch (ParseException e) {

logger.error("判断是否逾期解析时间出错");

}

return 0;

}

当同一个参数同时对上述方法进行多次调用时,结果不同.

56

56

1279716

56

56

56

5

736387

56

-1226645849

56

只有56才是正确答案.

但是当我用Joda-Time替换Calendar时,它会返回正确的答案.如何在不使用Joda-Time或锁定,解锁并获得正确答案的情况下更改此代码.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值