如何制作定时器?

我想制作一个等待400 MSc的Timer ,然后去打印“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(); 

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

 Timer t = new Timer(); t.schedule(new TimerTask() { @Override public void run() { System.out.println("Hi!"); } }, 400); 

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

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

TimeUnit.MILLISECONDS.sleep(150L);

是另一种选择;

你也可以看一下这个问题

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