Calendar.getInstance线程安全

use*_*049 4 java datetime calendar

如果我有以下方法; 是一个Calendar.getInstance()线程安全的调用?

 public Date currentTime() {
    Date d = null;
    synchronized(this){
        d = Calendar.getInstance().getTime();
    }
    return d;
 }
Run Code Online (Sandbox Code Playgroud)

我的理解是Calendar.getInstance()不是线程安全的,所以下面的方法不能是线程安全的.这是对的吗?

public Date currentTime() {
    return Calendar.getInstance().getTime();

}
Run Code Online (Sandbox Code Playgroud)

我知道Joda-Time被提升为日期时间API的最佳实践,但在这里我坚持使用标准的java.util.Date/Calendar类.

Sot*_*lis 9

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