SimpleDateFormat的使用。如何解析和转化时间字符串。如何在多线程的环境下使用这个SimpleDateFormat参见java.lang.Thread。并体验“线程安全”这个词的含义 。多线程这还不是很理解,代码尚需修改 package com.rj.yg; import java.text.SimpleDateFormat; import java.util.Date; /** * * @author 杨刚 * SimpleDateFormat的使用。如何解析和转化时间字符串。 * 如何在多线程的环境下使用这个SimpleDateFormat * 参见java.lang.Thread。并体验“线程安全”这个词的含义 。 * Jul 28, 2010 */ public class SimpleDateFormatDemo { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); public static void main(String[] args) { // 解析和转化时间字符串 Date date = new Date(); System.out.println("转化前的时间:" + date); System.out.println("转化后的时间:" + sdf.format(date)); // 多线程下用SimpleDateFormat,使用synchronized 解决线程安全问题 Date date1 = new Date(); Date date2 = new Date(date1.getTime() + 1000 * 60 * 60 * 24); synchronized(sdf){ Thread thread1 = new Thread(new Thread1(sdf, date1)); thread1.start(); } synchronized(sdf){ Thread thread2 = new Thread(new Thread2(sdf, date2)); thread2.start(); } } } // 多线程下用SimpleDateFormat class Thread1 implements Runnable { private SimpleDateFormat sdf; private Date date; public Thread1(SimpleDateFormat sdf, Date date) { this.sdf = sdf; this.date = date; } public void run() { for (;;) { String strDate = sdf.format(date); if("2010-07-29".equals(strDate)){ System.err.println("Error: date1="+strDate); // System.exit(0); } } } } class Thread2 implements Runnable { private SimpleDateFormat sdf; private Date date; public Thread2(SimpleDateFormat sdf, Date date) { this.sdf = sdf; this.date = date; } public void run() { for (;;) { String strDate = sdf.format(date); if("2010-07-28".equals(strDate)){ System.err.println("Error: date1="+strDate); // System.exit(0); } } } }