java - 暂停线程并从停止的地方恢复它

标签 java multithreading

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

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

谢谢。

最佳答案

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

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

stop():停止线程

resume():恢复使用suspend()挂起的线程。

notify():唤醒单个线程。

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

notifyAll():将唤醒所有 sleep (等待)线程。

注意

在最新版本的 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

关于java - 暂停线程并从停止的地方恢复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886194/

相关文章:

java - 如果花费的时间太长则跳过函数

java - AsyncTask 未运行,logcat 显示为暂停所有线程占用了 : time in ms

php - PHP pthreads计数事件线程吗?

java - 代理内的 REST 调用

java - 比较同一时区的java Date与sql TIMESTAMP

java - kafka-log4j-appender 0.9.0.1 省略了错误的可抛出信息

objective-c - 如何突然停止当前在后台执行的线程?

java - 为什么创建了一个JFrame对象并设置为可见后,程序还没有结束执行?

java - 如果我在 kotlin 中实现如下网络检查,会出现什么情况?

java - 如何在Java中处理csv文件引号中的逗号?