关于jfinal的ActionReporter, 为什么sdf要放到ThreadLocal中啊?

为什么ActionReporter的sdf要放到ThreadLocal中啊?

private static final ThreadLocal<SimpleDateFormat> sdf = new ThreadLocal<SimpleDateFormat>() {
		protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		}
	};

直接写个静态常量不可以吗?

评论区

Simon_Sun

2016-10-14 14:15

@jfinal 波总, 望赐教!

JFinal

2016-10-14 14:28

SimpleDateFormat 是非线程安全的,所以在多线程并发时会出错误,并发量大到一定程度可以测出来,这里并不重要,这个只会在开发模式 devMode 下会使用,生产环境不走这里

Simon_Sun

2016-10-14 14:32

@JFinal OK, 明白了. 谢波总.

sphsyv

2016-10-14 14:59

如果可以依赖commons-long3的jar就可以用org.apache.commons.lang3.time.FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(value)这个了

JFinal

2016-10-14 17:19

@sphsyv 为了一个 devMode 下可以用一行代码解决的问题去依赖于一个 apache jar 包不值得

热门反馈

扫码入社