简单说一下关于定义 SimpleDateFormat为静态资源的处理
因为SimpleDateFormat是线程不安全的类,一般不定义为静态,若一定要定义为静态,有三种解决方案。
1.加锁
2.不断地在内部new 对象
3.threadlocal
public class TL {
public static final ThreadLocal sdfThreadLocal = ThreadLocal.withInitial(()->new SimpleDateFormat(“yyy-MM-dd HH:mm:ss”));
public static final Date paserByThreadLocal(String stringDate) throws ParseException {
return sdfThreadLocal.get().parse(stringDate);
}
public static void main(String[] args) {
for (int i=1;i<=10;i++){
new Thread(() -> {
try {
System.out.println(TL.paserByThreadLocal(“2011-11-11 11:11:11”));
} catch (ParseException e) {
e.printStackTrace();
}
},String.valueOf(i)).start();
}
}