3

我想做一个Timer等待 400 MSc 然后去打印“嗨!” (例如)。我知道如何通过javax.swing.Timer

    ActionListener action = new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
       System.out.println("hi!");
    }
};

加:

    timer = new Timer(0, action);
    timer.setRepeats(false);
    timer.setInitialDelay(400);
    timer.start();

但据我所知,这绝对不是一个好方法,因为这种方法Timer适用于 Swing 作品。如何以正确的方式做到这一点?(不使用Thread.sleep()

4

4 回答 4

10
Timer t = new Timer();
t.schedule(new TimerTask() {

            @Override
            public void run() {
                System.out.println("Hi!");

            }
        }, 400);
于 2013-01-22T08:19:31.527 回答
1

您可以考虑 Quartz 调度器,它是一个真正可扩展、易于学习和配置的解决方案。您可以查看官方网站上的教程。
http://quartz-scheduler.org/documentation/quartz-2.1.x/quick-start

于 2013-01-22T08:19:46.107 回答
1
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class currentTime {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        System.out.println( sdf.format(cal.getTime()) );
    }

}
于 2015-08-10T16:11:58.677 回答
0

TimeUnit.MILLISECONDS.sleep(150L);

是另一种选择;

你也可以看看这个问题

这建议使用while仅等待的循环或 ScheduledThreadPoolExecutor

于 2013-01-22T08:11:51.760 回答