http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html
ThreadLocal 线程独享,synchronized 方法独享。
import java.text.ParseException;
public class TestSimpleDateFormat {
public static class ThreadSafe extends Thread {
@Override
public void run() {
while(true) {
try {
System.out.println(this+"="+System.currentTimeMillis());
//自己等待自己2000毫秒,提高并发命中//调用线程
this.join(2000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
try {
System.out.println(this.getName()+":"+DateUtil.parse("2015-11-11 00:00:00"));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
for(int i = 0; i < 3; i++){
new ThreadSafe().start();
}
}
}
Exception in thread "Thread-1" java.lang.NumberFormatException: For input string: "20152015E4"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:419)
at java.lang.Long.parseLong(Long.java:468)
at java.text.DigitList.getLong(DigitList.java:177)
at java.text.DecimalFormat.parse(DecimalFormat.java:1297)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1311)
at java.text.DateFormat.parse(DateFormat.java:335)
at com.wnj.javausage.DateUtil.parse(DateUtil.java:17)
方式1
private static ThreadLocal<DateFormat> sdf= new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static Date parse(String dateStr) throws ParseException {
return sdf.get().parse(dateStr);
}
方式2
public static DateFormat getDateFormat() {
DateFormat df = threadLocal.get();
if(df==null){
df = new SimpleDateFormat(date_format);
threadLocal.set(df);
}
return df;
}
public static String formatDate(Date date) throws ParseException {
return getDateFormat().format(date);
}