java 实现暂停、恢复
时间: 2023-12-30 21:02:37 浏览: 55
在 Java 中,可以使用线程的 wait() 和 notify() 方法来实现暂停和恢复。
首先,在需要暂停的地方调用 wait() 方法,该方法会使当前线程进入等待状态,并释放该线程持有的锁。然后,在需要恢复的地方调用 notify() 方法,该方法会唤醒等待该对象锁的一个线程,使其进入就绪状态。
下面是一个简单的示例代码:
```
public class PauseResumeExample {
private boolean paused = false;
private Object pauseLock = new Object();
public void doTask() {
while (true) {
// 检查是否需要暂停
synchronized (pauseLock) {
while (paused) {
try {
pauseLock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 执行任务
System.out.println("Task is running...");
// 模拟任务执行时间
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void pauseTask() {
paused = true;
}
public void resumeTask() {
synchronized (pauseLock) {
paused = false;
pauseLock.notify();
}
}
}
```
在上面的代码中,doTask() 方法是一个循环执行的任务,检查是否需要暂停。pauseTask() 方法将 paused 标志设置为 true,表示需要暂停。resumeTask() 方法将 paused 标志设置为 false,并调用 pauseLock.notify() 方法来唤醒等待该对象锁的线程。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)