ExecutorService,可安排在给定的延迟后运行或定期执行的命令。
schedule
方法使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象。scheduleAtFixedRate
和 scheduleWithFixedDelay
方法创建并执行某些在取消前一直定期运行的任务。
用 Executor.execute(java.lang.Runnable) 和 ExecutorService 的 submit
方法所提交的命令,通过所请求的 0 延迟进行安排。schedule
方法中允许出现 0 和负数延迟(但不是周期),并将这些视为一种立即执行的请求。
所有的 schedule
方法都接受相对 延迟和周期作为参数,而不是绝对的时间或日期。将以 Date 所表示的绝对时间转换成要求的形式很容易。例如,要安排在某个以后的Date
运行,可以使用:schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS)
。但是要注意,由于网络时间同步协议、时钟漂移或其他因素的存在,因此相对延迟的期满日期不必与启用任务的当前 Date
相符。 Executors 类为此包中所提供的 ScheduledExecutorService 实现提供了便捷的工厂方法。
1.ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
command
- 要执行的任务delay
- 从现在开始延迟执行的时间unit
- 延迟参数的时间单位get()
方法在完成后将返回 null
RejectedExecutionException
- 如果无法安排执行该任务NullPointerException
- 如果 command 为 null2.<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
callable
- 要执行的功能delay
- 从现在开始延迟执行的时间unit
- 延迟参数的时间单位RejectedExecutionException
- 如果无法安排执行该任务NullPointerException
- 如果 callable 为 null3.ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay, long period, TimeUnit unit)
initialDelay
后开始执行,然后在 initialDelay+period
后执行,接着在initialDelay + 2 * period
后执行,依此类推。如果任务的任何一个执行遇到异常,则后续执行都会被取消。否则,只能通过执行程序的取消或终止方法来终止该任务。如果此任务的任何一个执行要花费比其周期更长的时间,则将推迟后续执行,但不会同时执行。command
- 要执行的任务initialDelay
- 首次执行的延迟时间period
- 连续执行之间的周期unit
- initialDelay 和 period 参数的时间单位get()
方法在取消后将抛出异常RejectedExecutionException
- 如果无法安排执行该任务NullPointerException
- 如果 command 为 nullIllegalArgumentException
- 如果 period 小于等于 04.ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
long initialDelay, long delay, TimeUnit unit)
command
- 要执行的任务initialDelay
- 首次执行的延迟时间delay
- 一次执行终止和下一次执行开始之间的延迟unit
- initialDelay 和 delay 参数的时间单位get()
方法在取消后将抛出异常RejectedExecutionException
- 如果无法安排执行该任务NullPointerException
- 如果 command 为 null。IllegalArgumentException
- 如果 delay 小于等于 0
相关推荐
ScheduledExecutorService是Java并发编程中一个非常重要的工具类,它属于ExecutorService接口的一个实现,主要用于执行定时或周期性的任务。这个服务提供了强大的定时任务管理能力,可以用来安排在未来某一时刻或者...
这是一个jar,很秀。自定义的一个Java定时器工具类。主要是结合Spring Boot一起使用,并在Spring Boot启动的时候一起启动运行。
ScheduledExecutorService 任务定时代码示例 ScheduledExecutorService 是 Java 中的并发编程 API,用于执行延迟或周期性的任务。下面是对 ScheduledExecutorService 的任务定时代码示例的详细解释。 ...
基于ScheduledExecutorService的两种方法详解 基于ScheduledExecutorService的两种方法是Java并发编程中的一种常见方法,用于实现定时任务的执行。ScheduledExecutorService是Java并发编程中的一种高级API,提供了...
首先,Java提供了多种方式来实现延迟执行,例如使用`java.util.Timer`类、`java.util.concurrent.DelayQueue`或者`java.util.concurrent.ScheduledExecutorService`。这里我们将重点讨论`ScheduledExecutorService`...
您可以在工作线程上运行任务(Runnable或Callable),以指定执行计划(如ScheduledExecutorService),并指定执行时间。 介面 ScheduledFuture<?> schedule( Runnable command, int executeTime, long delay,...
本实例将深入探讨如何使用`ScheduledExecutorService`接口来实现这一功能。`ScheduledExecutorService`是Java并发包`java.util.concurrent`中的一个接口,它提供了延迟执行和周期性执行任务的能力。 首先,我们需要...
Java通用任务执行程序,基于java.util.concurrent.ScheduledExecutorService。 Java通用的任务执行器,基于java.util.concurrent.ScheduledExecutorService工具类实现。 Maven: <groupId>...
而 `ScheduledExecutorService` 是 `ExecutorService` 的子接口,增加了定时及周期性任务的执行能力。 在提供的代码示例中,`BeeperControl` 类展示了如何使用 `ScheduledExecutorService` 来实现定时任务调度。...
ScheduledExecutorService 的测试实用程序实现 允许测试如下代码: class Foo { private int count = 0; public Foo(ScheduledExecutorService service, Bar bar) { service.scheduleAtFixedRate(new Runnable...
在Java中,有两种主要的定时器类:`java.util.Timer` 和 `java.util.concurrent.ScheduledExecutorService`。本文将详细讲解这两种定时器的用法、优缺点以及如何在实际项目中应用它们。 ### 1. `java.util.Timer` ...
Java提供了多种实现定时任务的机制,这里主要介绍两种:Java.util.Timer类和java.util.concurrent.ScheduledExecutorService接口。 1. Java.util.Timer类: Timer类是Java早期提供的定时任务工具,它可以安排在...
这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了不同的功能和使用场景,让我们一一进行深入探讨。 首先,我们来看`java.util.Timer`类。...
在Java中,我们可以使用多种库和工具来创建和管理定时任务,如Java的内置API `java.util.Timer` 和 `java.util.concurrent.ScheduledExecutorService`。这两个类提供了丰富的功能,帮助开发者在特定时间或周期性地...
在Java中,我们可以使用多种库来实现这个功能,其中最常用的两个是`java.util.Timer`和`java.util.concurrent.ScheduledExecutorService`。 ## 1. `java.util.Timer` `Timer`类是Java标准库中的一个基础定时器,...
在Java中,有多种方式可以实现任务调度,包括基础的`Timer`类、`ScheduledExecutorService`接口以及第三方库如Quartz和JCronTab。 首先,我们来看`Timer`类。`Timer`是最简单的任务调度实现,它基于单线程模型,...
我们可以使用`Executors`类的静态方法创建一个ScheduledExecutorService实例,然后通过`schedule()`, `scheduleAtFixedRate()` 或 `scheduleWithFixedDelay()` 方法来安排任务。ScheduledExecutorService相比Timer有...
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3); ``` 然后,我们可以通过ScheduledExecutorService的scheduleWithFixedDelay()或scheduleAtFixedRate()方法来安排任务...
本示例将详细介绍如何在Android中使用两种主要的线程池:ThreadPoolExecutor和ScheduledExecutorService。 ThreadPoolExecutor是Java并发库中提供的一个基础线程池实现,它允许开发者自定义核心线程数、最大线程数...