如何暂停线程执行

如何暂停某些Thread的执行。 我有Thread t,我有两个按钮,PAUSE和CONTINUE。 在暂停时我需要暂停线程执行并继续从之前停止的点开始执行线程。 把什么放在听众中?

Java中的线程是合作的,这意味着您不能强制线程停止或暂停,而是向线程发出您想要的信号并且线程(=您的逻辑)自己做。

使用synchronized,wait()和notify()。

  1. 在要停止的线程中创建一个primefaces标志(例如布尔字段)。 Stoppable线程在循环中监视此标志。 循环必须在synchronized块内。
  2. 当您需要停止线程(按钮单击)时,您可以设置此标志。
  3. 线程看到标志已设置并在公共对象(可能是自身)上调用wait() )。
  4. 如果要重新启动线程,请重置标志并调用commonObject.notify()

我想你可能想看看针对java.lang.Object的wait()和notify()方法

等待和等待你可以打电话。 等待听起来更接近你想要的。 为什么需要暂停某些线程的执行? 如果它不是作业,那么可能还有其他解决方案。

与线程池相同的逻辑。 线程在池中的位置,直到它们被调用以执行提交给池的某些操作

你可以试试这个:

 private boolean isPaused = false; public synchronized void pause(){ isPaused = true; } public synchronized void play(){ isPaused = false; notyfyAll(); } public synchronized void look(){ while(isPaused) wait(); } public void run(){ while(true){ look(); //your code }