Synchronization
Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
但是在项目中,我们为了省事,一般都会创建一个DateFormat的static对象,然后 dateFormatter.format(now); 之类的,这里就有相当大的不安全因数。
在common-loggins 里的SimpleLog是这么写的
String dateText;
synchronized(dateFormatter) {
dateText = dateFormatter.format(now);
}
另可参看这篇blog:
Java Best Practices – DateFormat in a Multithreading Environment