`
mmdev
  • 浏览: 13255087 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

ScheduledExecutorService

 
阅读更多
ScheduledExecutorService<wbr style="line-height:25px"><br style="line-height:25px"> 所有超级接口:<br style="line-height:25px"> Executor,ExecutorService<br style="line-height:25px"> 所有已知实现类:<br style="line-height:25px"> ScheduledThreadPoolExecutor<br style="line-height:25px"> publicinterfaceScheduledExecutorService<br style="line-height:25px"> extendsExecutorService<br style="line-height:25px"><span style="color:#ff00ff; line-height:25px">ScheduledExecutorService</span><span style="color:#003366; line-height:25px">是一个</span><span style="color:#ff6600; line-height:25px">ExecutorService</span><span style="color:#003366; line-height:25px">,</span><wbr style="line-height:25px"><span style="color:#003366; line-height:25px">但是可安排在给定的延迟后运行或定期执行的命令</span><wbr style="line-height:25px"><span style="color:#003366; line-height:25px">。</span><br style="line-height:25px"><wbr style="line-height:25px"><span style="color:#993300; line-height:25px">schedule</span><span style="color:#003366; line-height:25px">方法使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务的</span><span style="color:#ff9900; line-height:25px">ScheduledFuture</span><span style="color:#003366; line-height:25px">对象<wbr style="line-height:25px">。<br style="line-height:25px"><wbr style="line-height:25px">scheduleAtFixedRate和scheduleWithFixedDelay方法创建并执行某些在取消前一直定期运行的任务<wbr style="line-height:25px">。</wbr></wbr></wbr></span><br style="line-height:25px"> 用<span style="color:#0000ff; line-height:25px">Executor.execute(java.lang.Runnable)</span>和<span style="color:#0000ff; line-height:25px">ExecutorService的submit</span>方法所提交的命令,通过所请求的<wbr style="line-height:25px"><span style="color:#0000ff; line-height:25px">0延迟</span><wbr style="line-height:25px">进行安排。<br style="line-height:25px"><wbr style="line-height:25px"><span style="color:#ff6600; line-height:25px">schedule</span><span style="color:#003366; line-height:25px">方法中允许出现</span><span style="color:#ff9900; line-height:25px">0</span><span style="color:#003366; line-height:25px">和</span><span style="color:#ff9900; line-height:25px">负数延迟</span><span style="color:#003366; line-height:25px">(但不是周期),并将这些视为是</span><span style="color:#000080; line-height:25px">立即执行的请求</span><wbr style="line-height:25px"><span style="color:#003366; line-height:25px">。</span><br style="line-height:25px"> 所有的schedule方法都接受<wbr style="line-height:25px"><span style="color:#000080; line-height:25px">相对延迟和周期作为参数</span><wbr style="line-height:25px">,而不是绝对的时间或日期。<br style="line-height:25px"> 将以Date所表示的绝对时间转换成要求的形式很容易。例如,要安排在某个以后的Date运行,<br style="line-height:25px"> 可以使用:<span style="color:#0000ff; line-height:25px">schedule(task,</span><wbr style="line-height:25px"><span style="color:#ff9900; line-height:25px">date.getTime()-System.currentTimeMillis()</span><strong>,</strong><wbr style="line-height:25px"><span style="color:#0000ff; line-height:25px">TimeUnit.MILLISECONDS)</span>。<br style="line-height:25px"> 但是要注意,由于网络时间同步协议、时钟漂移或其他因素的存在,因此相对延迟的期满日期不必与启用任务的当前Date相符。<br style="line-height:25px"> Executors类为此包中所提供的ScheduledExecutorService实现提供了便捷的工厂方法。<br style="line-height:25px"> 注意1:它只有一个实现类<wbr style="line-height:25px"><span style="color:#99cc00; line-height:25px">ScheduledThreadPoolExecutor</span><wbr style="line-height:25px">。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
关于ScheduledThreadPoolExecutor的更多内容请参考《ScheduledThreadPoolExecutor
用法示例
以下是一个带方法的类,它设置了ScheduledExecutorService,在1小时内每10秒钟蜂鸣一次:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);

public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep");

};
final ScheduledFuture beeperHandle =
scheduler
.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler
.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}}
主要方法:
ScheduledFuture<?><wbr style="line-height:25px"><span style="color:#ff6600; line-height:25px">schedule</span><wbr style="line-height:25px">(Runnablecommand,<br style="line-height:25px"> longdelay,<br style="line-height:25px"> TimeUnitunit)<br style="line-height:25px"> 创建并执行在给定延迟后启用的一次性操作。<br style="line-height:25px"> 参数:<br style="line-height:25px"> command-要执行的任务<br style="line-height:25px"> delay-从现在开始延迟执行的时间<br style="line-height:25px"> unit-延迟参数的时间单位<br style="line-height:25px"> 返回:<br style="line-height:25px"> 表示挂起任务完成的ScheduledFuture,并且其get()方法在完成后将返回null<br style="line-height:25px"> 抛出:<br style="line-height:25px"> RejectedExecutionException-如果无法安排执行该任务<br style="line-height:25px"> NullPointerException-如果command为null<br style="line-height:25px"> &lt;V&gt;ScheduledFuture&lt;V&gt;<wbr style="line-height:25px"><span style="color:#ff6600; line-height:25px">schedule</span><wbr style="line-height:25px">(Callable&lt;V&gt;callable,<br style="line-height:25px"> longdelay,<br style="line-height:25px"> TimeUnitunit)<br style="line-height:25px"> 创建并执行在给定延迟后启用的ScheduledFuture。<br style="line-height:25px"> 参数:<br style="line-height:25px"> callable-要执行的功能<br style="line-height:25px"> delay-从现在开始延迟执行的时间<br style="line-height:25px"> unit-延迟参数的时间单位<br style="line-height:25px"> 返回:<br style="line-height:25px"> 可用于提取结果或取消的ScheduledFuture<br style="line-height:25px"> 抛出:<br style="line-height:25px"> RejectedExecutionException-如果无法安排执行该任务<br style="line-height:25px"> NullPointerException-如果callable为null<br style="line-height:25px"> ScheduledFuture&lt;?&gt;<wbr style="line-height:25px"><span style="color:#ff6600; line-height:25px">scheduleAtFixedRate</span><wbr style="line-height:25px">(Runnablecommand,<br style="line-height:25px"> longinitialDelay,<br style="line-height:25px"> longperiod,<br style="line-height:25px"> TimeUnitunit)<br style="line-height:25px"> 创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在initialDelay后开始执行,然后在initialDelay+period后执行,接着在initialDelay+2*period后执行,依此类推。如果任务的任何一个执行遇到异常,则后续执行都会被取消。否则,只能通过执行程序的取消或终止方法来终止该任务。如果此任务的任何一个执行要花费比其周期更长的时间,则将推迟后续执行,但不会同时执行。<br style="line-height:25px"> 参数:<br style="line-height:25px"> command-要执行的任务<br style="line-height:25px"> initialDelay-首次执行的延迟时间<br style="line-height:25px"> period-连续执行之间的周期<br style="line-height:25px"> unit-initialDelay和period参数的时间单位<br style="line-height:25px"> 返回:<br style="line-height:25px"> 表示挂起任务完成的ScheduledFuture,并且其get()方法在取消后将抛出异常<br style="line-height:25px"> 抛出:<br style="line-height:25px"> RejectedExecutionException-如果无法安排执行该任务<br style="line-height:25px"> NullPointerException-如果command为null<br style="line-height:25px"> IllegalArgumentException-如果period小于等于0<br style="line-height:25px"> ScheduledFuture&lt;?&gt;<wbr style="line-height:25px"><span style="color:#ff6600; line-height:25px">scheduleWithFixedDelay</span><wbr style="line-height:25px">(Runnablecommand,<br style="line-height:25px"> longinitialDelay,<br style="line-height:25px"> longdelay,<br style="line-height:25px"> TimeUnitunit)<br style="line-height:25px"> 创建并执行一个在给定初始延迟后首次启用的定期操作,随后,在每一次执行终止和下一次执行开始之间都存在<span style="color:#000080; line-height:25px">给定的延迟</span>。<br style="line-height:25px"> 如果任务的任一执行遇到异常,就会取消后续执行。否则,只能通过执行程序的取消或终止方法来终止该任务。<br style="line-height:25px"> 参数:<br style="line-height:25px"> command-要执行的任务<br style="line-height:25px"> initialDelay-首次执行的延迟时间<br style="line-height:25px"> delay-一次执行终止和下一次执行开始之间的延迟<br style="line-height:25px"> unit-initialDelay和delay参数的时间单位<br style="line-height:25px"> 返回:<br style="line-height:25px"> 表示挂起任务完成的ScheduledFuture,并且其get()方法在取消后将抛出异常<br style="line-height:25px"> 抛出:<br style="line-height:25px"> RejectedExecutionException-如果无法安排执行该任务<br style="line-height:25px"> NullPointerException-如果command为null。<br style="line-height:25px"> IllegalArgumentException-如果delay小于等于0</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
评论

相关推荐

    ScheduledExecutorService 计时器任务处理

    ScheduledExecutorService是Java并发编程中一个非常重要的工具类,它属于ExecutorService接口的一个实现,主要用于执行定时或周期性的任务。这个服务提供了强大的定时任务管理能力,可以用来安排在未来某一时刻或者...

    自定义Java-ScheduledExecutorService定时器.jar

    这是一个jar,很秀。自定义的一个Java定时器工具类。主要是结合Spring Boot一起使用,并在Spring Boot启动的时候一起启动运行。

    ScheduledExecutorService任务定时代码示例

    ScheduledExecutorService 任务定时代码示例 ScheduledExecutorService 是 Java 中的并发编程 API,用于执行延迟或周期性的任务。下面是对 ScheduledExecutorService 的任务定时代码示例的详细解释。 ...

    基于ScheduledExecutorService的两种方法(详解)

    基于ScheduledExecutorService的两种方法详解 基于ScheduledExecutorService的两种方法是Java并发编程中的一种常见方法,用于实现定时任务的执行。ScheduledExecutorService是Java并发编程中的一种高级API,提供了...

    java实现一个小程序语句的延迟执行的小demo

    首先,Java提供了多种方式来实现延迟执行,例如使用`java.util.Timer`类、`java.util.concurrent.DelayQueue`或者`java.util.concurrent.ScheduledExecutorService`。这里我们将重点讨论`ScheduledExecutorService`...

    android-fixedtimes-ScheduledExecutorService:具有指定执行时间的ScheduledExecutorService

    您可以在工作线程上运行任务(Runnable或Callable),以指定执行计划(如ScheduledExecutorService),并指定执行时间。 介面 ScheduledFuture&lt;?&gt; schedule( Runnable command, int executeTime, long delay,...

    Springmvc java注解设置定时任务实例

    本实例将深入探讨如何使用`ScheduledExecutorService`接口来实现这一功能。`ScheduledExecutorService`是Java并发包`java.util.concurrent`中的一个接口,它提供了延迟执行和周期性执行任务的能力。 首先,我们需要...

    TaskExecutor:Java通用任务执行器,基于java.util.concurrent.ScheduledExecutorService

    Java通用任务执行程序,基于java.util.concurrent.ScheduledExecutorService。 Java通用的任务执行器,基于java.util.concurrent.ScheduledExecutorService工具类实现。 Maven: &lt;groupId&gt;...

    java多线程并发executorservice(任务调度)类

    而 `ScheduledExecutorService` 是 `ExecutorService` 的子接口,增加了定时及周期性任务的执行能力。 在提供的代码示例中,`BeeperControl` 类展示了如何使用 `ScheduledExecutorService` 来实现定时任务调度。...

    serial-executor-service:ScheduledExecutorService 的测试实用程序实现

    ScheduledExecutorService 的测试实用程序实现 允许测试如下代码: class Foo { private int count = 0; public Foo(ScheduledExecutorService service, Bar bar) { service.scheduleAtFixedRate(new Runnable...

    java 写的定时器

    在Java中,有两种主要的定时器类:`java.util.Timer` 和 `java.util.concurrent.ScheduledExecutorService`。本文将详细讲解这两种定时器的用法、优缺点以及如何在实际项目中应用它们。 ### 1. `java.util.Timer` ...

    java定时执行代码.

    Java提供了多种实现定时任务的机制,这里主要介绍两种:Java.util.Timer类和java.util.concurrent.ScheduledExecutorService接口。 1. Java.util.Timer类: Timer类是Java早期提供的定时任务工具,它可以安排在...

    java 实现调度器

    这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了不同的功能和使用场景,让我们一一进行深入探讨。 首先,我们来看`java.util.Timer`类。...

    java Schedule

    在Java中,我们可以使用多种库和工具来创建和管理定时任务,如Java的内置API `java.util.Timer` 和 `java.util.concurrent.ScheduledExecutorService`。这两个类提供了丰富的功能,帮助开发者在特定时间或周期性地...

    java在服务启动的时候启动定时器

    在Java中,我们可以使用多种库来实现这个功能,其中最常用的两个是`java.util.Timer`和`java.util.concurrent.ScheduledExecutorService`。 ## 1. `java.util.Timer` `Timer`类是Java标准库中的一个基础定时器,...

    Java调度原理及使用.docx

    在Java中,有多种方式可以实现任务调度,包括基础的`Timer`类、`ScheduledExecutorService`接口以及第三方库如Quartz和JCronTab。 首先,我们来看`Timer`类。`Timer`是最简单的任务调度实现,它基于单线程模型,...

    Java计时器

    我们可以使用`Executors`类的静态方法创建一个ScheduledExecutorService实例,然后通过`schedule()`, `scheduleAtFixedRate()` 或 `scheduleWithFixedDelay()` 方法来安排任务。ScheduledExecutorService相比Timer有...

    几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】.docx

    ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3); ``` 然后,我们可以通过ScheduledExecutorService的scheduleWithFixedDelay()或scheduleAtFixedRate()方法来安排任务...

    Android线程池管理的代码例子

    本示例将详细介绍如何在Android中使用两种主要的线程池:ThreadPoolExecutor和ScheduledExecutorService。 ThreadPoolExecutor是Java并发库中提供的一个基础线程池实现,它允许开发者自定义核心线程数、最大线程数...

Global site tag (gtag.js) - Google Analytics