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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英伟达 RTX 视频超分辨率技术正式推出
- 下一篇: 关于UIImageView的显示问题——