Calendar.getInstance线程安全

时间:2014-02-17 03:42:47

标签: java datetime calendar

如果我有以下方法;是对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类。

2 个答案:

答案 0 :(得分:9)

是的,Calendar.getInstance()是线程安全的,因为每次调用都会创建并返回一个新实例。通过同步或将getTime()返回的值存储在临时变量中,您无法获得任何东西。

答案 1 :(得分:1)

在这种情况下,为什么你的意思是线程安全?您没有修改任何变量,时间由系统管理。因此,对该方法的任何调用都将为您提供系统的当前时间。不需要在我看来同步它。