ThreadLocal 与 SimpleDateFormat
所属分类 java
浏览量 1206
SimpleDateFormat 线程非安全 ,使用 ThreadLocal ,每个线程一个实例
SimpleDateFormat parse 方法 非线程安全
java.lang.NumberFormatException: For input string
format 方法 测试时没发现问题
static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
static final ThreadLocal< SimpleDateFormat> formatThreadLocal = new ThreadLocal< SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT);
return sdf;
}
};
推荐使用 apache commons-lang包的DateFormatUtils 或 FastDateFormat
threadlocal 原理
ThreadLocal
线程局部变量 线程本地变量
每一个线程都有一份变量的副本 互相不影响 空间换时间
线程的ThreadLocalMap
ThreadLocal 变量为key ,且是弱引用
ThreadLocal.ThreadLocalMap
static class Entry extends WeakReference> {
/** The value associated with this ThreadLocal. */
Object value;
Entry(ThreadLocal> k, Object v) {
super(k);
value = v;
}
}
完整代码
https://gitee.com/dyyx/hellocode/blob/master/src/dyyx/conc/ThreadLocalSimpleDateFormat.java
上一篇
下一篇
TCP 重传 滑动窗口 流量控制 拥塞控制
tomcat 热加载 热部署
arthas 使用 ognl 设置日志级别
hashCode和identifyHashCode区别
clickhouse表引擎
clickhouse SQL