在java中不使用挂起API的线程挂起技术

问题描述 投票:0回答:1

我正在阅读 Cay S Horstman 撰写的有关 Java 线程的书。以下是文字片段。

如果你想安全地挂起一个线程,引入一个变量 “suspendRequested”并在运行方法的安全位置测试它 - 在 您的线程不会锁定其他线程的对象的地方 需要。当你的线程发现“suspendRequested”变量有 已设置,它应该继续等待,直到它再次可用。

我的问题是

假设threadA正在运行并且它想被挂起它会检查“suspendRequested”,如果它被设置它会等待,这一点很清楚。 我的问题是谁会将“suspendRequested”设置为 true 以及 threadA 如何知道它应该再次启动?请解释一下这个

java concurrency
1个回答
0
投票
当想要暂停

controllerThread

 时,
suspendRequested
true
标志设置为
threadA
threadA
检查此标志是否处于
run()
方法中,如果已设置,则使用
wait()
Thread.sleep()
进入等待状态。要恢复
threadA
,控制线程将
suspendRequested
设置回
false
并调用
notify()
唤醒
threadA

© www.soinside.com 2019 - 2024. All rights reserved.