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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。