2 u014353911 u014353911 于 2017.09.03 11:58 提问

java,延迟执行的问题,谢谢解答。

想做一个延迟执行一个类方法,该怎么写?
比如延迟5秒后执行a.start()方法,谢谢各位解答,最好给多种解决方法

5个回答

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.03 12:15
已采纳

【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");
    }

有问题,,,,还可以追问,,,,有帮助,,请采纳

oyljerry
oyljerry   Ds   Rxr 2017.09.03 13:01

标准做法
ScheduledThreadPoolExecutor
http://blog.csdn.net/sadfishsc/article/details/16980213

gbb1065202029
gbb1065202029 hao
3 个月之前 回复
qq_39654446
qq_39654446   2017.09.03 13:57

楼上说的对,线程sleep

ShewMi
ShewMi   2017.09.03 19:00

楼上的各种做法均可行,但是有一个问题,尤其是延迟启动但是没有参照,或者参照者不固定的情况,你需要在这个线程外部调控,这样设置粒度会比较大,不利于维护和提高安全性,只要在这个线程start()后,sleep5秒即可

Sweet__dream
Sweet__dream   2017.09.04 09:04

使用线程中的sleep()方法,Thread.sleep(5000);

Csdn user default icon
上传中...
上传图片
插入图片