求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。

求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。,第1张

可以用以下几种方法

interrupt():中断线程

stop():强迫线程停止执行。用 Threadstop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。yield()只能使同优先级的线程有执行的机会。----这句是重点

3书上说yelid()是礼让,是让当前执行线程停下来给别的线程资源, 又说没有任何机制保证会这样。----------没有任何机制保证执行yield()的线程一定会把资源让给其它线程。打个比方:两个人抢东西,A抢到了B没有,再把东西放回去重抢,说不定还是A抢到B没有。没有任何机制保证放回去后B一定能抢到

sleep方法使线程睡眠,但是到一定毫秒数时会自动到cpu中等待

wait方法使线程等待,但是不会自动到cpu中等待,要通过notify或者notifyall方法进行唤醒。

以上是让线程等待的方法,你可以选择适合你程序的方法。

后台有两个线程交替运行,有一个标志位,每次循环都要去读一次前台传来的参数,为空就不做处理继续循环。不为空,标志位为false,也就是要暂停,进入wait(); notify唤醒守候线程 循环->读前台参数标志位->直到参数变了守候线程wait(),notify唤醒业务线程。

在你的main方法里加上这个

try {

Threadsleep(5000);//括号里面的5000代表5000毫秒,也就是5秒,可以该成你需要的时间

} catch (InterruptedException e) {

eprintStackTrace();

}

我觉得吧

你暂停的时候应该吧TIMERCANCEL()掉,也就是退出TIMER,等恢复的时候再重新调用TIMER

如果时间是变动的,那么你就不要用TIMER,自己NEW 一个THREAD然后在THREAD里设置一个标志变量,可以再外面访问的,用它来控制线程的退出,里面再调用thissleep(),

不能再主线程里直接SLEEP,那样程序会全停掉

以上就是关于求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。全部的内容,包括:求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。、请教web页面中控制后台java程序暂停,终止的问题、小弟刚学java,想问一下 java中的 延迟函数。就是调用一下此函数让程序暂停一下(几秒),再向下执行,拜等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9426789.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存