Executors 提供的单定时线程 关闭 在开启 在关闭 在开启
时间: 2023-07-07 11:17:55 浏览: 48
好的,您可以参考以下 Java 代码实现:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MyScheduledTask implements Runnable {
public void run() {
System.out.println("Hello, world!");
}
public static void main(String[] args) {
// 创建定时任务线程池
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
// 创建定时任务对象
MyScheduledTask task = new MyScheduledTask();
// 每隔5秒执行一次任务
executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
// 等待10秒后关闭定时线程池
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
// 等待5秒后重新创建线程池并执行任务
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
// 等待10秒后再次关闭定时线程池
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
}
}
```
在上面的代码中,我们创建了一个单定时线程的线程池对象,即通过`Executors.newSingleThreadScheduledExecutor()`方法创建`ScheduledExecutorService`对象。然后,我们创建了一个`MyScheduledTask`对象,并通过`scheduleAtFixedRate()`方法将该定时任务安排在每隔5秒执行一次。接着,我们通过`Thread.sleep()`方法等待10秒后关闭定时线程池,即通过`executor.shutdown()`方法关闭线程池。然后,我们等待5秒后重新创建线程池并执行任务。最后,我们再次通过`Thread.sleep()`方法等待10秒后关闭定时线程池,即通过`executor.shutdown()`方法关闭线程池。这样,我们就可以实现在关闭、开启、关闭、开启的过程中使用单定时线程了。