使用Sleep方法,就是去新建一个线程,然后里边放一个Thread.sleep()方法,这也是比较通俗的做法。但在main方法里直接加入Thread.sleep(),是对main线程的休眠

使用 Java API 提供的Timer类,来实现。

Timer timer=new Timer();
TimerTask task=new TimerTask(){
     public void run(){
           //需要延迟执行的业务数据
     }
};
timer.schedule(task,2000);//延迟2秒执行
//timer.schedule(task,2000,2000);//延迟2秒执行,并且每隔2秒定时执行。
通过调试发现,创建一个Timer对象,就会创建一个main线程之外的独立子线程程序,来专门执行计时器里的任务,而任务也被理解成为对象:TimerTask,这也体现了JAVA中一切皆是对象的理念。一个Timer里即使有多个TimerTask对象,也只会开启一个线程来应付。

SUN推出新的解决方案,beepForAnHour设置了 ScheduledExecutorService

private final ScheduledExecutorService scheduler =Executors.newScheduledThreadPool(1); //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。池中所保存的线程数为1个,即使线程是空闲的也包括在内。