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

2024-12-14 17:17:31
推荐回答(3个)
回答1:

可以用以下几种方法:
interrupt():中断线程

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

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

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

sleep方法使线程睡眠,但是到一定毫秒数时会自动到cpu中等待
wait方法使线程等待,但是不会自动到cpu中等待,要通过notify或者notifyall方法进行唤醒。

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

回答2:

暂停线程用wait()方法,开启线程用notifyAll()方法。
Thread thread = new Thread(new Runnable()
{
@Override
public void run()
{
(Task............)
wait();
}
});
thread.start();
notifyAll();

回答3:

请问现在实现了吗,我也遇到了这个需求