我正在阅读 Cay S Horstman 撰写的有关 Java 线程的书。以下是文字片段。
如果你想安全地挂起一个线程,引入一个变量 “suspendRequested”并在运行方法的安全位置测试它 - 在 您的线程不会锁定其他线程的对象的地方 需要。当你的线程发现“suspendRequested”变量有 已设置,它应该继续等待,直到它再次可用。
我的问题是
假设threadA正在运行并且它想被挂起它会检查“suspendRequested”,如果它被设置它会等待,这一点很清楚。 我的问题是谁会将“suspendRequested”设置为 true 以及 threadA 如何知道它应该再次启动?请解释一下这个
controllerThread
时,
suspendRequested
将 true
标志设置为 threadA
。 threadA
检查此标志是否处于 run()
方法中,如果已设置,则使用 wait()
或 Thread.sleep()
进入等待状态。要恢复 threadA
,控制线程将 suspendRequested
设置回 false
并调用 notify()
唤醒 threadA
。