1 package com.tanlu.user.util;
2
3 import java.text.DateFormat;
4 import java.text.ParseException;
5 import java.text.SimpleDateFormat;
6 import java.util.Date;
7
8 /**
9 * 考虑到SimpleDateFormat为线程不安全对象,故应用ThreadLocal来解决,
10 * 使SimpleDateFormat从独享变量变成单个线程变量
11 */
12 public class ThreadLocalDateUtil {
13
14 //写法1:
15 /*private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
16 @Override
17 protected DateFormat initialValue() {
18 return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
19 }
20 };
21
22 public static Date parse(String dateStr) throws ParseException {
23 return threadLocal.get().parse(dateStr);
24 }
25
26 public static String format(Date date) {
27 return threadLocal.get().format(date);
28 }*/
29
30
31 //写法2:
32 private static final String date_format = "yyyy-MM-dd HH:mm:ss";
33 private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>();
34
35 public static DateFormat getDateFormat() {
36 DateFormat df = threadLocal.get();
37 if(df == null){
38 df = new SimpleDateFormat(date_format);
39 threadLocal.set(df);
40 }
41 return df;
42 }
43
44 public static String formatDate(Date date) throws ParseException {
45 return getDateFormat().format(date);
46 }
47
48 public static Date parse(String strDate) throws ParseException {
49 return getDateFormat().parse(strDate);
50 }
51
52
53 }