有如下四种解决方法

    将格式化对象定义成局部变量,但是每调用一次方法意味创建一个格式化对象,浪费内存。
    方法加同步锁synchronized,在同一时刻,只有一个线程可以执行类中的某个方法。这样性能较差,每次都要等待锁释放后其他线程才能进入。
    使用第三方库joda-time,由第三方考虑线程不安全的问题。
    使用ThreadLocal:每个线程拥有自己的格式化对象。