如果我有以下方法;是对Calendar.getInstance()
线程安全的调用吗?
public Date currentTime() {
Date d = null;
synchronized(this){
d = Calendar.getInstance().getTime();
}
return d;
}
我的理解是Calendar.getInstance()
不是线程安全的,所以后续方法不能是线程安全的。这是对的吗?
public Date currentTime() {
return Calendar.getInstance().getTime();
}
我理解Joda-Time被宣传为日期时间API的最佳实践,但在这里我遇到了标准的java.util.Date/Calendar类。
答案 0 :(得分:9)
是的,Calendar.getInstance()
是线程安全的,因为每次调用都会创建并返回一个新实例。通过同步或将getTime()
返回的值存储在临时变量中,您无法获得任何东西。
答案 1 :(得分:1)
在这种情况下,为什么你的意思是线程安全?您没有修改任何变量,时间由系统管理。因此,对该方法的任何调用都将为您提供系统的当前时间。不需要在我看来同步它。