Put ISO8601_FORMAT into ThreadLocal to fix the concurrency issue

This commit is contained in:
zsxwing 2014-05-30 11:45:28 +08:00
parent 8330e9c474
commit 4ee8e079c9

View File

@ -54,7 +54,14 @@ import org.json.JSONTokener;
public class ParsingUtilities { public class ParsingUtilities {
static final public SimpleDateFormat ISO8601_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); static final private ThreadLocal<SimpleDateFormat> ISO8601_FORMAT = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
}
};
static public Properties parseUrlParameters(HttpServletRequest request) { static public Properties parseUrlParameters(HttpServletRequest request) {
Properties options = new Properties(); Properties options = new Properties();
@ -167,7 +174,7 @@ public class ParsingUtilities {
* @return string with ISO 8601 formatted date & time * @return string with ISO 8601 formatted date & time
*/ */
static public String dateToString(Date d) { static public String dateToString(Date d) {
return ISO8601_FORMAT.format(d); return ISO8601_FORMAT.get().format(d);
} }
/** /**
@ -178,7 +185,7 @@ public class ParsingUtilities {
*/ */
static public Date stringToDate(String s) { static public Date stringToDate(String s) {
try { try {
return ISO8601_FORMAT.parse(s); return ISO8601_FORMAT.get().parse(s);
} catch (ParseException e) { } catch (ParseException e) {
return null; return null;
} }