首页 > 解决方案 > 暂停线程并从它停止的地方恢复它

问题描述

我是线程的新手。我有一个带有按钮的 GUI,可以启动执行核心操作的线程;我有另一个按钮,按下时应该暂停主线程。

是否可以从停止的地方恢复主线程?问题的核心是线程从哪里恢复,所以不是重复的问题。

谢谢你。

标签: javamultithreading

解决方案


有很多方法可以操作线程。

suspend(): 将线程置于挂起状态,可以使用resume()

stop(): 停止线程

resume(): 恢复一个使用 . 挂起的线程suspend()

notify(): 唤醒一个线程。

wait():使当前线程等待..(或睡眠),直到另一个线程调用该线程的notify()方法。

notifyAll(): 将唤醒所有休眠(等待)的线程。

笔记

在最新版本的 Java resume() 中,suspend() 和 stop() 已被弃用

来自OP的问题

但是当我唤醒它时,它从哪里恢复?它是从头开始还是从它离开的地方开始?

想象一个简单的for循环。

Starting thread 1.
Starting thread 2.
Thread 1: 0
Thread 2: 0
Thread 1: 1
Thread 2: 1
Pausing thread 1.
Thread 2: 2
Thread 2: 3
Thread 2: 4
Resuming thread 1.
Thread 1: 2
Thread 2: 5

推荐阅读