如何让一个线程停止执行另一个任务然后回来?
Posted
技术标签:
【中文标题】如何让一个线程停止执行另一个任务然后回来?【英文标题】:How to let a thread stop to do another task and then come back? 【发布时间】:2017-11-16 18:45:23 【问题描述】:请注意:事实上,这可能不是一个真正的问题,只是来自我的想法:)
在所有编程语言中,是否有一些方法可以做到这一点:
一个线程(名为 ThreadA)正在执行一个消耗时间任务(名为 TaskA)。 当它完成TaskA的一部分时,我们可以让它在完成另一个任务时继续做剩下的事情吗?换句话说,我们可以让线程
stop to do
执行另一个任务,然后返回到continue to do
剩下的部分吗?
更新: 假设我们有两个任务TaskA(低优先级)和TaskB(高优先级)。我们仅限于创建一个线程来执行任务。线程在做TaskA时,如果有更高优先级的任务来了(比如TaskB),线程必须保存当前状态,做更高的。
【问题讨论】:
它可以启动另一个线程来执行第二个任务,并等待它完成。 我不太明白你想要达到什么目的......线程正在并行执行,也就是说,如果线程 A 完成了它的一部分工作,它可以向线程 B 发出信号以对其执行某些操作。 ... @SteveSmith 感谢您的评论。如果我们只使用一个线程,它可以同时执行更多任务吗? 线程可以同时执行任务。 @FdXing 程序中的每一行都逐行执行。如果你不想同时做一些事情,你至少需要 2 threds。一个在做 taskA 另一个在做 taskB 【参考方案1】:我认为您所说的只是方法中的方法调用。
public void taskA()
int i = 1;
i++;
//DO other stuff
System.out.println("Starting to work on other task")
taskB(); //<------ This is what you're looking for
System.out.println("Finished with other task. Now working on this task again")
i++;
System.out.println(i);
public void taskB()
System.out.println("This is from other task")
【讨论】:
好吧。在主线程或新的单独线程中运行它没有区别。 @TomStein 感谢您的评论。我更新我的问题。对不起我的英语不好。【参考方案2】:我认为他正在寻找的是等待并通知
wait() - Causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object.
notify() - Wakes up a single thread that is waiting on this object's monitor.
或暂停、停止、恢复
找到你一个链接:https://www.tutorialspoint.com/java/java_thread_control.htm
【讨论】:
感谢您的评论@OferSkulsky。我更新了这个问题。希望不要混淆你。对不起我的英语不好。以上是关于如何让一个线程停止执行另一个任务然后回来?的主要内容,如果未能解决你的问题,请参考以下文章