ScheduledExecutorServiceJava中的接口是sub-interfaceExecutorService接口定义在java.util.concurrent包。该接口用于定期运行给定的任务或在给定的延迟后运行一次。 ScheduledExecutorService 接口声明了一些有用的方法来安排给定的任务。这些方法是由ScheduledThreadPoolExecutor类。
声明
public interface ScheduledExecutorService extends ExecutorService
ScheduledExecutorService的层次结构
实施类
ScheduledExecutorService 的实现类是 ScheduledThreadPoolExecutor 。
创建ScheduledExecutorService对象
由于ScheduledExecutorService是一个接口,因此无法实例化。但是 java.util.concurrent 包中定义的 Executors 类提供了一些返回 ScheduledExecutorService 对象(其实现类的对象)的工厂方法
- 公共静态 ScheduledExecutorService newScheduledThreadPool(int corePoolSize):创建一个具有给定核心池大小的新调度线程池(核心池大小)并返回一个 ScheduledExecutorService 对象,该对象可以向下转换为 ScheduledThreadPoolExecutor 对象。该对象可用于在给定延迟后运行任务或定期执行。
- 公共静态 ScheduledExecutorService newScheduledThreadPool(int corePoolSize , ThreadFactory threadFactory):使用给定的核心池大小 (corePoolSize) 创建一个新的调度线程池,并返回一个 ScheduledExecutorService 对象,该对象可以向下转换为 ScheduledThreadPoolExecutor 对象。第二个参数是创建新线程时使用的 ThreadFactory 对象。
ScheduledExecutorService 接口示例:
Java
// Java Program to demonstrate
// SchedulerExecutorService
import java.util.concurrent.*;
import java.util.*;
import java.io.*;
class SchedulerExecutorServiceExample {
public static void main(String[] args)
{
System.out.println(
"A count-down-clock program that counts from 10 to 0");
// creating a ScheduledExecutorService object
ScheduledExecutorService scheduler
= Executors.newScheduledThreadPool(11);
// printing the current time
System.out.println(
"Current time : "
+ Calendar.getInstance().get(Calendar.SECOND));
// Scheduling the tasks
for (int i = 10; i >= 0; i--) {
scheduler.schedule(new Task(i), 10 - i,
TimeUnit.SECONDS);
}
// remember to shutdown the scheduler
// so that it no longer accepts
// any new tasks
scheduler.shutdown();
}
}
class Task implements Runnable {
private int num;
public Task(int num) { this.num = num; }
public void run()
{
System.out.println(
"Number " + num + " Current time : "
+ Calendar.getInstance().get(Calendar.SECOND));
}
}
输出:
A count-down-clock program that counts from 10 to 0 Current time : 28 Number 10 Current time : 28 Number 9 Current time : 29 Number 8 Current time : 30 Number 7 Current time : 31 Number 6 Current time : 32 Number 5 Current time : 33 Number 4 Current time : 34 Number 3 Current time : 35 Number 2 Current time : 36 Number 1 Current time : 37 Number 0 Current time : 38
这是一个从 10 计数到 0 的倒计时时钟。ScheduledExexutorService 对象即;调度程序是使用 Executors.newScheduledThreadPool(int corePoolSize) 方法创建的。
注意:之后执行的所有任务(10 - 一世)调用延迟秒数schedule()方法。输出中的当前时间值可能会根据执行时间而变化。
ScheduledExecutorService的方法
METHOD |
DESCRIPTION |
---|---|
日程(可运行命令,长时间延迟,TimeUnit单元) | 提交 one-shot 任务,该任务在给定延迟后启用。 |
日程(可调用<V>可调用,长延时,TimeUnit单元) | 提交 value-returning one-shot 任务,该任务在给定延迟后启用。 |
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) | 提交一个定期操作,该操作首先在给定的初始延迟后启用,然后在给定的时间段内启用;也就是说,执行将在initialDelay之后开始,然后是initialDelay + period,然后是initialDelay + 2 * period,依此类推。 |
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) | 提交一个周期性操作,该操作在给定的初始延迟后首先启用,然后在一次执行终止和下一次执行开始之间具有给定的延迟。 |
接口 java.util.concurrent.Executor 中声明的方法
METHOD |
DESCRIPTION |
---|---|
execute(Runnable command) | 在将来的某个时间执行给定的命令。 |
接口 java.util.concurrent.ExecutorService 中声明的方法
METHOD |
DESCRIPTION |
---|---|
awaitTermination(long timeout, TimeUnit unit) | 阻塞,直到所有任务在关闭请求后完成执行,或者发生超时,或者当前线程被中断,以先发生者为准。 |
invokeAll(Collection<? 扩展 Callable<T>> 任务) | 执行给定的任务,在全部完成时返回保存其状态和结果的 Future 列表。 |
invokeAll(Collection<? 扩展 Callable<T>> 任务,长时间超时,TimeUnit 单元) | 执行给定的任务,当所有任务完成或超时到期(以先发生者为准)时,返回保存其状态和结果的 Future 列表。 |
invokeAny(Collection<? 扩展 Callable<T>> 任务) | 执行给定的任务,返回已成功完成的任务的结果(即,不引发异常)(如果有)。 |
invokeAny(Collection<? 扩展 Callable<T>> 任务,长时间超时,TimeUnit 单元) | 执行给定的任务,返回已成功完成的任务的结果(即,不引发异常)(如果在给定超时之前有任何执行)。 |
isShutdown() | 如果此执行器已关闭,则返回 true。 |
isTerminated() | 如果关闭后所有任务均已完成,则返回 true。 |
shutdown() | 启动有序关闭,其中执行先前提交的任务,但不会接受新任务。 |
shutdownNow() | 尝试停止所有正在执行的任务,停止正在等待的任务的处理,并返回正在等待执行的任务的列表。 |
submit(Runnable task) | 提交一个 Runnable 任务来执行并返回一个表示该任务的 Future。 |
submit(Runnable task, T result) | 提交一个 Runnable 任务来执行并返回一个表示该任务的 Future。 |
提交(Callable<T> 任务) | 提交 value-returning 任务以供执行,并返回表示任务待处理结果的 Future。 |
相关用法
- Java ScheduledThreadPoolExecutor用法及代码示例
- Java Scanner findWithinHorizon()用法及代码示例
- Java Scanner hasNext()用法及代码示例
- Java Scanner next()用法及代码示例
- Java Scanner remove()用法及代码示例
- Java Scanner tokens()用法及代码示例
- Java Scanner close()用法及代码示例
- Java Scanner delimiter()用法及代码示例
- Java Scanner findInLine()用法及代码示例
- Java Scanner hasNextBigDecimal()用法及代码示例
- Java Scanner hasNextBoolean()用法及代码示例
- Java Scanner hasNextDouble()用法及代码示例
- Java Scanner hasNextFloat()用法及代码示例
- Java Scanner hasNextLine()用法及代码示例
- Java Scanner hasNextShort()用法及代码示例
- Java Scanner ioException()用法及代码示例
- Java Scanner locale()用法及代码示例
- Java Scanner match()用法及代码示例
- Java Scanner nextBigDecimal()用法及代码示例
- Java Scanner nextBigInteger()用法及代码示例
- Java Scanner nextBoolean()用法及代码示例
- Java Scanner nextByte()用法及代码示例
- Java Scanner nextDouble()用法及代码示例
- Java Scanner nextFloat()用法及代码示例
- Java Scanner nextInt()用法及代码示例
注:本文由纯净天空筛选整理自samufo大神的英文原创作品 ScheduledExecutorService Interface in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。