程序运行暂停所设定的时间后再继续执行下面的语句(java编程)

程序运行暂停所设定的时间后再继续执行下面的语句(java编程),第1张

在要暂停的地方加入以下语句:

try{

Threadsleep(10000);

}catch(InterruptedException e)

{

Systemerrprintln(e);

}

其中10000改成你要暂停的时间,单位是毫秒,1秒=1000毫秒。

Java中主要有两种方法来实现延迟,即:Thread和Timer

1、普通延时用Threadsleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如

try

{

ThreadcurrentThread()sleep(1000);//毫秒

}

catch(Exception e){}

在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。

2、但是如果要使用精确延时,最好使用Timer类:

Timer timer=new Timer();//实例化Timer类

timerschedule(new TimerTask(){

public void run(){

Systemoutprintln("退出");

thiscancel();}},500);//五百毫秒

这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timerschedule(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()

你说的应该不是sleep吧。呵呵,

这么简单的话,就没必要在这里问了。

我猜测呢,你是要在多线程计时任务

Task线程里面有个while循环?

那么你需要一个TimerTask 来控制这个线程,也就是计时线程。

那么这个计时线程,有两种方法~

第一种,比较不讲究的方法,也就是,对结果处理不好的方式,类似于过时方法的stop,就是把你的Task线程在TimerTask里面启动。

TimerTask里面类似于

while(true){

Taskstart();

Date date = new Date();

while(true){

计算时间差,如果时间差大于超时时间,则break

而在Task线程中,需要加上一行代码

thissetDeamon(true);

将这个task任务设置成后台线程。

因为是TimerTask启动的这个后台任务线程, 一旦超时,那么,这个后台线程Task将会被强制shutdown 。

这种方式适用于不怎么严格的线程要求。

还有一种呢,就是比较严格,对后台处理要求很高的那种。

就是两个线程中需要有共享的变量,将结果,运行状态,都要共享,当TimerTask发现超时的时候,会判断Task线程的处理结果。以及运行状态,而做出相应的处理。

你问的问题比较宽泛。所以,我只能大致的把思路给介绍一下。

如果,能牵扯到实际的问题,那样就容易判断用那种方式的线程超时机制比较好了。呵呵

最后,节日愉快~~

public class DaoJiShi implements Runnable{

@Override

public void run() {

int time=10;

while(true){

Systemoutprintln("还剩"+time+"秒");

time--;

if(time<=0){

Systemoutprintln("计时结束");

break;

}

try {

Threadsleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

public static void main(String args[]){

DaoJiShi d=new DaoJiShi();

Thread t=new Thread(d);

tstart();

}

}

给你写了一个倒计时的小程序用纯java暂停,继续我还真做不出来如果在倒计时的过程中输入数据不太现实如果有页面的话就简单多了用javascript就好了

  java控制程序执行,使用的是Thread这个类,可以控制程序暂停或者休眠几秒再执行。示例如下:

public abstract class MyThread extends Thread {  

  

    private boolean suspend = false;  

  

    private String control = ""; // 只是需要一个对象而已,这个对象没有实际意义  

  

    public void setSuspend(boolean suspend) {  

        if (!suspend) {  

            synchronized (control) {  

                controlnotifyAll();  

            }  

        }  

        thissuspend = suspend;  

    }  

  

    public boolean isSuspend() {  

        return thissuspend;  

    }  

  

    public void run() {  

        while (true) {  

            synchronized (control) {  

                if (suspend) {  

                    try {  

                        controlwait();  

                    } catch (InterruptedException e) {  

                        eprintStackTrace();  

                    }  

                }  

            }  

            thisrunPersonelLogic();  

        }  

    }  

  

    protected abstract void runPersonelLogic();  

      

    public static void main(String[] args) throws Exception {  

        MyThread myThread = new MyThread() {  

            protected void runPersonelLogic() {  

                Systemoutprintln("myThead is running");  

            }  

        };  

        myThreadstart();  

        Threadsleep(3000);  

        myThreadsetSuspend(true);  

        Systemoutprintln("myThread has stopped");  

        Threadsleep(3000);  

        myThreadsetSuspend(false);  

    }  

}

sleep(毫秒数)是Thread类的静态方法。

使用时:Threadsleep(毫秒数);

如Threadsleep(1000);该线程睡眠1秒钟,之间此线程什么都不做。

等1秒钟之后,继续余下代码执行。

不过线程是没有保证的。也许1秒钟之后,该线程没有转为可运行状态,也是可能的。

以上就是关于程序运行暂停所设定的时间后再继续执行下面的语句(java编程)全部的内容,包括:程序运行暂停所设定的时间后再继续执行下面的语句(java编程)、JAVA中 如何使用延迟、java 多线程如何让程序运行一定时间后停止等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10629369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存