java线程池执行任务(一次任务、固定间隔时间任务等)

编程入门 行业动态 更新时间:2024-10-09 00:50:52

java<a href=https://www.elefans.com/category/jswz/34/1771240.html style=线程池执行任务(一次任务、固定间隔时间任务等)"/>

java线程池执行任务(一次任务、固定间隔时间任务等)

在 Java 中,可以使用线程池来执行定时任务。线程池是一种管理和复用线程的机制,它可以提高线程的利用率,减少线程创建和销毁的开销,并且可以控制并发线程的数量。

Java 中的定时任务可以使用 ScheduledThreadPoolExecutor 类来实现,它是 ThreadPoolExecutor 类的子类,专门用于执行定时任务。通过 ScheduledThreadPoolExecutor,可以按照指定的延迟时间或固定的时间间隔来执行任务。

下面是一个使用线程池执行定时任务的示例代码:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class ScheduledThreadPoolExample {public static void main(String[] args) throws InterruptedException {// 创建一个大小为 5 的线程池ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);// 延迟 1 秒后执行任务executor.schedule(new Task(), 1, TimeUnit.SECONDS);// 延迟 2 秒后开始执行任务,然后每隔 3 秒重复执行任务executor.scheduleAtFixedRate(new Task2(), 2, 3, TimeUnit.SECONDS);// 延迟 2 秒后开始执行任务,然后在上一次任务执行完成后,等待 3 秒再执行下一次任务executor.scheduleWithFixedDelay(new Task3(), 2, 3, TimeUnit.SECONDS);Thread.sleep(100*1000);// 关闭线程池executor.shutdown();}static class Task implements Runnable {@Overridepublic void run() {System.out.println("延迟一秒执行 " + System.currentTimeMillis());}}static class Task2 implements Runnable {@Overridepublic void run() {System.out.println("延迟 2 秒后开始执行任务,然后每隔 3 秒重复执行任务 " + System.currentTimeMillis());}}static class Task3 implements Runnable {@Overridepublic void run() {System.out.println("延迟 2 秒后开始执行任务,然后在上一次任务执行完成后,等待 3 秒再执行下一次任务 " + System.currentTimeMillis());}}
}

首先,我们创建了一个大小为 5 的线程池 executor,它使用 Executors.newScheduledThreadPool() 方法来创建。然后,我们使用 schedule() 方法调度了一个延迟 1 秒后执行的任务,该任务由 Task 类的实例执行。接着,我们使用 scheduleAtFixedRate() 方法调度了一个延迟 2 秒后开始执行的任务,并且每隔 3 秒重复执行一次,该任务由 Task2 类的实例执行。最后,我们使用 scheduleWithFixedDelay() 方法调度了一个延迟 2 秒后开始执行的任务,并且在上一次任务执行完成后,等待 3 秒再执行下一次任务,该任务由 Task3 类的实例执行。

在每个任务的 run() 方法中,我们输出了相应任务的执行时间戳。

为了保证定时任务的执行时间足够长,我们使用 Thread.sleep(100*1000) 方法让主线程休眠 100 秒。

最后,我们调用 executor.shutdown() 方法关闭线程池。

执行上述代码后,将会输出类似以下结果:

延迟一秒执行 1634736445744
延迟 2 秒后开始执行任务,然后每隔 3 秒重复执行任务 1634736448747
延迟 2 秒后开始执行任务,然后在上一次任务执行完成后,等待 3 秒再执行下一次任务 1634736451747

通过以上代码,我们实现了使用线程池执行定时任务,并且按照指定的延迟时间或固定的时间间隔来执行任务。

更多推荐

java线程池执行任务(一次任务、固定间隔时间任务等)

本文发布于:2023-12-06 23:37:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1669367.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线程   间隔时间   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!