下面的代码是每两秒打印一次静态系统时间,但是我想每两秒打印一次动态系统时间

时间:2019-02-11 08:31:47

标签: java multithreading core

我正在尝试编写一个简单的Java程序,该程序每2秒动态输出一次当前时间。实际上,它每2秒打印一次,但是它打印的时间与当前时间完全相同。 我不知道为什么 这是我尝试过的:

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class curtime extends Thread {

public void run()
{
     Calendar cal = Calendar.getInstance();
     for (int i=0;i<=10;i++)
        try {
            Thread.sleep(2000);
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            System.out.println( sdf.format(cal.getTime()) );

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

}
public static void main(String args[])
{
        curtime cut = new curtime();
        cut.start();
}
}

1 个答案:

答案 0 :(得分:2)

这里:

Calendar cal = Calendar.getInstance();

那个呼叫获取时间。

然后将该时间转换为日期,然后将其转换为字符串十次。 您必须在循环中 内获取一个新的Calendar实例!

但是在2019年,真正的答案是改为使用LocalDateTime.now()。日历/日期的内容严重已过时,不建议再使用!