java - 暂停线程并从它停止的地方恢复它
问题描述
我是线程的新手。我有一个带有按钮的 GUI,可以启动执行核心操作的线程;我有另一个按钮,按下时应该暂停主线程。
是否可以从停止的地方恢复主线程?问题的核心是线程从哪里恢复,所以不是重复的问题。
谢谢你。
解决方案
有很多方法可以操作线程。
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
推荐阅读
- jms - 为什么我收到 AMQ214016: Failed to create netty connection and UnknownHostException
- c# - 在不同的网站中使用 Asp.Net 站点
- php - 在 laravel 刀片中的下拉选择事件中未打开模态
- python - aerich init-db 只创建一张表,但预计会创建多张表
- html - 谁能帮我理解为什么在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?
- java - 将应用程序上传到 Playstore 后,Dynamodb 映射器查询失败
- node.js - Slack users.list api 在传递有效令牌时也会抛出 invalid_auth 错误
- c - 使用 mod_proxy_fcgi 和 nginx proxy_pass 编写应用服务器守护进程
- swift - 结合 map 和 switchToLatest 混淆
- visual-studio-code -
热键不适用于 Visual Studio Code