
可以用以下几种方法:
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中的 延迟函数。就是调用一下此函数让程序暂停一下(几秒),再向下执行,拜等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)