📄 e096. pausing a thread.txt
字号:
The proper way to temporarily pause the execution of another thread is to set a variable that the target thread checks occasionally. When the target thread detects that the variable is set, it calls Object.wait(). The paused thread can then be woken up by calling its Object.notify() method.
Note: Thread.suspend() and Thread.resume() provide methods for pausing a thread. However, these methods have been deprecated because they are very unsafe. Using them often results in deadlocks. With the approach above, the target thread can ensure that it will be paused in an appropriate place.
// Create and start the thread
MyThread thread = new MyThread();
thread.start();
while (true) {
// Do work
// Pause the thread
synchronized (thread) {
thread.pleaseWait = true;
}
// Do work
// Resume the thread
synchronized (thread) {
thread.pleaseWait = false;
thread.notify();
}
// Do work
}
class MyThread extends Thread {
boolean pleaseWait = false;
// This method is called when the thread runs
public void run() {
while (true) {
// Do work
// Check if should wait
synchronized (this) {
while (pleaseWait) {
try {
wait();
} catch (Exception e) {
}
}
}
// Do work
}
}
}
Related Examples
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -