Java 如何制作计时器?

Java 如何制作计时器?,java,timer,Java,Timer,我想制作一个定时器,等待400 MSc,然后去打印“hi!”(例如)。我知道如何通过javax.swing.Timer ActionListener action = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("hi!"); } }; 加上: timer = new Timer(0,

我想制作一个
定时器
,等待400 MSc,然后去打印“hi!”(例如)。我知道如何通过
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();

但我知道这肯定不是一个好方法,因为这种
计时器是用于Swing工作的。如何以正确的方式做到这一点?(不使用
Thread.sleep()

时间单位.毫秒.睡眠(150L)

是另一种选择

你们也可以看看这个问题

这建议使用一个只需等待的
while
循环
或者一个

你可以考虑石英调度器,它是一个可扩展的、易于学习和配置的解决方案。您可以在官方网站上查看教程。

还有
java.util.Timer
我不知道如何使用它?你到底想做什么?也许使用作业框架对您来说是一个更好的解决方案,这取决于您需要使用它做什么。您是对的,但最后我只想运行一个
Runnable
,不需要任何复杂的工作为什么不使用util.Timer?这取决于您必须做什么。如果您需要一个涉及日期、时间等的复杂条件,最好使用Quartz,因为它有一个非常灵活的调度器。您可以建立条件,如每月的每个星期三或每月的最后一天12:00。它还可以自动重复一项作业多次,例如每小时重复一次,持续5小时。另一方面,对于一个简单的计时器,我也会使用util.timer。@Soheil thx获取该信息;)我是Java新手,又学了点东西=)
Timer t = new Timer();
t.schedule(new TimerTask() {

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

            }
        }, 400);
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()) );
    }

}