在Android下往往会出现以下的警告:
11-02 14:06:03.259: W/System.err(20698): at java.text.SimpleDateFormat.(SimpleDateFormat.java:253)11-02 14:11:39.309: W/System.err(20827): java.lang.NumberFormatException: Invalid int: ""11-02 14:11:39.319: W/System.err(20827): at java.lang.Integer.invalidInt(Integer.java:138)11-02 14:11:39.319: W/System.err(20827): at java.lang.Integer.parseInt(Integer.java:359)11-02 14:11:39.319: W/System.err(20827): at java.lang.Integer.parseInt(Integer.java:332)11-02 14:11:39.319: W/System.err(20827): at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)11-02 14:11:39.319: W/System.err(20827): at java.util.Calendar. (Calendar.java:745)11-02 14:11:39.319: W/System.err(20827): at java.util.GregorianCalendar. (GregorianCalendar.java:338)11-02 14:11:39.319: W/System.err(20827): at java.util.GregorianCalendar. (GregorianCalendar.java:314)11-02 14:11:39.319: W/System.err(20827): at java.text.SimpleDateFormat. (SimpleDateFormat.java:378)11-02 14:11:39.319: W/System.err(20827): at java.text.SimpleDateFormat. (SimpleDateFormat.java:368)11-02 14:11:39.319: W/System.err(20827): at java.text.SimpleDateFormat. (SimpleDateFormat.java:253)
DateFormat 类是一个非线程安全的类。 文档里面提到"Date formats是不能同步的。 我们建议为每个线程创建独立的日期格式。 如果多个线程同时访问一个日期格式,这需要在外部加上同步代码块。"
以下的代码为我们展示了如何在一个线程环境里面使用DateFormat把字符串日期转换为日期对象。创建一个实例来获取日期格式会比较高效,因为系统不需要多次获取本地语言和国家。
更多解决内容http://www.oschina.net/translate/dateformat-with-multiple-threads