`

(转)ScheduledExecutorService接口

阅读更多
ScheduledExecutorService接口
在ExecutorService的基础上,ScheduledExecutorService提供了按时间安排执行任务的功能,它提供的方法主要有:
schedule(task,initDelay):安排所提交的Callable或Runnable任务在initDelay指定的时间后执行。
scheduleAtFixedRate():安排所提交的Runnable任务按指定的间隔重复执行
scheduleWithFixedDelay():安排所提交的Runnable任务在每次执行完后,等待delay所指定的时间后重复执行。
代码:ScheduleExecutorService的例子
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorServiceTest
{
       public static void main(String[] args) throws InterruptedException,ExecutionException
       {
              //*1
               ScheduledExecutorService service=Executors.newScheduledThreadPool(2);
               //*2
               Runnable task1=new Runnable()
               {
                    public void run()
                    {
                       System.out.println("Taskrepeating.");
                    }
               };
               //*3
               final ScheduledFuture future1=service.scheduleAtFixedRate(task1,0,1,TimeUnit.SECONDS);
               //*4
               ScheduledFuture future2=service.schedule(new Callable()
             {
                    public String call()
                    {
                            future1.cancel(true);
                            return "taskcancelled!";
                    }
               },10,TimeUnit.SECONDS);
               System.out.println(future2.get());
    //*5
    service.shutdown();
   }
}

这个例子有两个任务,第一个任务每隔一秒打印一句“Taskrepeating”,第二个任务在5秒钟后取消第一个任务。

*1:初始化一个ScheduledExecutorService对象,这个对象的线程池大小为2。
*2:用内函数的方式定义了一个Runnable任务。
*3:调用所定义的ScheduledExecutorService对象来执行任务,任务每秒执行一次。能重复执行的任务一定是Runnable类型。注意我们可以用TimeUnit来制定时间单位,这也是Java5.0里新的特征,5.0以前的记时单位是微秒,现在可精确到奈秒。
*4:调用ScheduledExecutorService对象来执行第二个任务,第二个任务所作的就是在5秒钟后取消第一个任务。
*5:关闭服务。
分享到:
评论

相关推荐

    ScheduledExecutorService 计时器任务处理

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

    ScheduledExecutorService任务定时代码示例

    ScheduledExecutorService 是一个接口,用于管理和执行延迟或周期性的任务。它提供了多种方法来执行任务,如 scheduleAtFixedRate、scheduleWithFixedDelay 等。ScheduledExecutorService 可以用来实现各种定时任务...

    java定时执行代码.

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

    定时获取腾讯在线人数接口

    3. **多线程与定时任务**:使用ScheduledExecutorService或Quartz等工具实现定时任务,确保按预定时间间隔执行数据获取。 4. **数据处理与分析**:对获取到的在线人数进行统计和计算,可能涉及到数学统计方法和算法...

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

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

    java.util.concurrent.uml.pdf

    ScheduledExecutorService接口扩展了ExecutorService接口,并增加了定时和周期性执行任务的能力。这表示该接口可以安排在未来某一时刻执行任务,或周期性重复执行。 ExecutorService是Executor的一个子接口,增加了...

    接口课程设计(计时时钟)的设计与实现

    这需要实现一个定时任务调度器,如Java的ScheduledExecutorService,或者使用操作系统级别的定时器。 6. **测试与调试**:良好的软件工程实践要求我们编写单元测试来验证各个组件的功能,以及集成测试确保所有组件...

    Java并发Timer源码分析

    在Java 5中,引入了java.util.concurrent包,提供了更好的并发编程解决方案,例如ScheduledExecutorService接口,可以用来执行延时和周期性任务,并且提供了更好的线程管理和异常处理机制。 在使用Timer时,需要...

    线程调度、网络接口封装

    在Java中,我们可以自定义线程调度策略通过实现`java.util.concurrent.ScheduledExecutorService`接口或使用内置的`ThreadPoolExecutor`。例如,`ScheduledThreadPoolExecutor`允许我们创建一个可以安排周期性任务...

    spring定时器相关资料

    3. **ScheduledExecutorService接口**:除了异步执行外,Spring还提供了定时执行任务的能力。ScheduledExecutorService接口提供了延迟执行和周期性执行任务的方法。 二、Spring定时器(TaskScheduler) 1. **Task...

    JAVA定时关机程序源代码

    Java提供了多种实现定时任务的方式,如java.util.Timer类和javax.swing.Timer类,以及Java 5引入的ScheduledExecutorService接口。在这个小程序中,最可能使用的应该是ScheduledExecutorService,因为它更为强大且...

    java Schedule

    为了解决`Timer`类的这些问题,Java 5引入了`java.util.concurrent.ScheduledExecutorService`接口,它是`ExecutorService`的子接口,提供了更高级别的定时任务调度功能。`ScheduledThreadPoolExecutor`是实现这个...

    Java线程池.docx

    scheduledExecutorService接口是Java语言中的一种高级多线程处理机制,用于支持定时任务的执行。该接口定义了三类定时方法: 1. schedule方法 schedule方法用于在给定的时间对任务进行一次性调度。该方法有两个...

    Java按时间梯度实现异步回调接口的方法

    调度线程池的使用是通过使用 ScheduledExecutorService 来实现的。该线程池大小为16,可以根据实际情况进行调整。线程池的使用可以提高系统的处理能力和响应速度。 知识点6:回调时间梯度的策略 回调时间梯度的...

    一个轮询的java案例

    在Java中,实现轮询可以使用各种方式,包括while循环、Thread.sleep()方法来控制间隔时间,以及使用ScheduledExecutorService来更精确地调度任务。下面是一个简单的轮询示例: ```java import java.util.concurrent...

    java定时器定时调用任务

    此外,Java 5引入了`java.util.concurrent`包,其中的`ScheduledExecutorService`和`ScheduledFuture`接口提供了更强大的定时任务调度能力,包括支持取消、暂停和恢复任务,以及更灵活的定时策略。它们通常比`Timer`...

    Java计划技术

    在Java中,计划任务的实现主要依赖于`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`接口以及相关的并发工具类。本文将深入探讨这些技术,并提供实例来帮助理解它们的应用。 1. **`java....

    java 定时执行任务

    在Java中,有两种主要的方式来实现定时任务:Java.util.Timer类和java.util.concurrent包下的ScheduledExecutorService接口。下面我们将详细探讨这两种方法。 1. Java.util.Timer类和TimerTask `Timer`类是Java早期...

    java 写的定时器

    `java.util.concurrent.ScheduledExecutorService` 接口 `ScheduledExecutorService` 是Java并发包(`java.util.concurrent`)的一部分,提供更强大、灵活的定时任务调度功能。它支持多线程任务执行,并且可以取消...

Global site tag (gtag.js) - Google Analytics