如何暂停线程执行
如何暂停某些Thread的执行。 我有Thread t,我有两个按钮,PAUSE和CONTINUE。 在暂停时我需要暂停线程执行并继续从之前停止的点开始执行线程。 把什么放在听众中?
Java中的线程是合作的,这意味着您不能强制线程停止或暂停,而是向线程发出您想要的信号并且线程(=您的逻辑)自己做。
使用synchronized,wait()和notify()。
- 在要停止的线程中创建一个primefaces标志(例如布尔字段)。 Stoppable线程在循环中监视此标志。 循环必须在
synchronized
块内。 - 当您需要停止线程(按钮单击)时,您可以设置此标志。
- 线程看到标志已设置并在公共对象(可能是自身)上调用
wait()
)。 - 如果要重新启动线程,请重置标志并调用
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 }