ThreadLocal 解决simpledateformat线程不安全

package com.example.demo.util;

import java.text.SimpleDateFormat;

public class DateFormatUtil {
private static ThreadLocal<SimpleDateFormat> simpleDateFormatThreadLocal=new ThreadLocal<SimpleDateFormat>(){
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};

public static SimpleDateFormat getSimpleDateFormat(){
return simpleDateFormatThreadLocal.get();
}
}

----------------------------------------------------------------------------------------------------------
package com.example.demo.time;

import com.example.demo.util.DateFormatUtil;

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDate {
public static void main(String[] args) {
for (int i=0;i<10;i++){
new Thread(new Runnable() {
@Override
public void run() {
//注意 一定不要用一个栈指向多个引用
SimpleDateFormat simpleDateFormat = DateFormatUtil.getSimpleDateFormat();
String now = simpleDateFormat.format(new Date());

try {
Date dd = simpleDateFormat.parse(now);
String ff = simpleDateFormat.format(dd);
if(ff.equals(now)){
System.out.println("1111111111");
}else {
System.out.println("000000000");
}
} catch (Exception e) {
e.printStackTrace();
}

}
}).start();
}

}
}

猜你喜欢

转载自www.cnblogs.com/coderdxj/p/11490773.html