想做一个延迟执行一个类方法,该怎么写?
比如延迟5秒后执行a.start()方法,谢谢各位解答,最好给多种解决方法
【1】感觉Thread.sleep(5000);很合适,,,
【2】使用 Java API 提供的Timer类(参考:http://blog.csdn.net/wdh314228223/article/details/42146125
final Timer timer=new Timer(); TimerTask task=new TimerTask(){
public void run(){
System.out.println("计时任务");
//timer.cancel(); 终止此计时器,丢弃所有当前已安排的任务。这不会干扰当前正在执行的任务(如果存在)。一旦终止了计时器,那么它的执行线程也会终止,并且无法根据它安排更多的任务。注意,在此计时器调用的计时器任务的 run 方法内调用此方法,就可以绝对确保正在执行的任务是此计时器所执行的最后一个任务。
}
};
timer.schedule(task,5000, 2000); //这个命令就是5秒钟之后执行TimerTask里边的内容,后边的执行时间间隔为2秒钟。
}
【3】object.wait(5000);,,,他需要和锁配合使用,,下面瞎写了一个例子,,仅供参考
public static void main(String[] args) {
Object object = new Object();
synchronized (object) {
try {
object.wait(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("9999999");
}
有问题,,,,还可以追问,,,,有帮助,,请采纳
标准做法
ScheduledThreadPoolExecutor
http://blog.csdn.net/sadfishsc/article/details/16980213
楼上说的对,线程sleep
楼上的各种做法均可行,但是有一个问题,尤其是延迟启动但是没有参照,或者参照者不固定的情况,你需要在这个线程外部调控,这样设置粒度会比较大,不利于维护和提高安全性,只要在这个线程start()后,sleep5秒即可
使用线程中的sleep()方法,Thread.sleep(5000);