首页  

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<ThreadLocal<?>> {
            /** 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