2024-06-24 08:45:45 | 我爱编程网
你说的应该不是sleep吧。呵呵,
这么简单的话,就没必要在这里问了。
我猜测呢,你是要在多线程计时任务
Task线程里面有个while循环?
那么你需要一个TimerTask 来控制这个线程,也就是计时线程。
那么这个计时线程,有两种方法~
第一种,比较不讲究的方法,也就是,对结果处理不好的方式,类似于过时方法的stop,就是把你的Task线程在TimerTask里面启动。
TimerTask里面类似于
while(true){
Task.start();
Date date = new Date();
while(true){
计算时间差,如果时间差大于超时时间,则break
}
}
而在Task线程中,需要加上一行代码
this.setDeamon(true);
将这个task任务设置成后台线程。
因为是TimerTask启动的这个后台任务线程, 一旦超时,那么,这个后台线程Task将会被强制shutdown 。
这种方式适用于不怎么严格的线程要求。
还有一种呢,就是比较严格,对后台处理要求很高的那种。
就是两个线程中需要有共享的变量,将结果,运行状态,都要共享,当TimerTask发现超时的时候,会判断Task线程的处理结果。以及运行状态,而做出相应的处理。
你问的问题比较宽泛。所以,我只能大致的把思路给介绍一下。
如果,能牵扯到实际的问题,那样就容易判断用那种方式的线程超时机制比较好了。呵呵
最后,节日愉快~~
方案操作如下:
(1)让程序在一个单独的线程中运行,然后在终止时,可以用线程的终止方法来结束它。
(2)退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是希望看到的情况!!!!
要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。
只有在程序非正常退出时,才使用exit方法退出程序
我爱编程网(https://www.52biancheng.com)小编还为大家带来java 如何让一个程序运行一段时间后就停止运行的相关内容。
public static void main(String[] args) {
long begain = System.currentTimeMillis();//开始系统时间
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
long CheckTime = System.currentTimeMillis(); //判断时间
while(true){
System.out.println(CheckTime-begain);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
CheckTime = System.currentTimeMillis();
if((CheckTime-begain)>=(30*1000)){//判断时候到30秒
System.out.println("30秒后结束");
break;我爱编程网
}
}
}
给你的答案希望你能满意
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-01-05 14:11:24