SecheduledExecutorService

本文介绍如何使用Java中的ScheduledExecutorService来安排任务在特定时间后或周期性执行。通过实例演示了如何创建一个每10秒执行一次的任务,并在一个小时后停止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个ExecutorService,可安排给定一段时间之后执行或者周期执行。

schedule方法可生成不同延迟的任务,返回任务对象。这些任务能被取消或者检查完成情况。scheduleAtFixedRate和scheduleWithFixedDelay能够周期性地执行任务,直到它被取消为止。用Executor的execute方法和ExecutorService的submit方法提交的命令相当于请求的延迟为0。在schedule方法中,允许0和负数。0和负数被认为是允许立刻执行的请求。

所有的schedule方法提供相对延迟和周期作为参数,而不是绝对的延迟和周期。将以Date表示的绝对时间转变成所需要的形式很简单

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;


public class BeepControl {


private final ScheduledExecutorService scheduler=Executors.newScheduledThreadPool(1);

public void beepForAHour(){
final Runnable beeper = new Runnable() {
                public void run() { System.out.println("beep"); }
           };
 final ScheduledFuture<?> beeperHandle=scheduler.scheduleAtFixedRate(beeper, 10, 10, TimeUnit.SECONDS);
 scheduler.schedule(new Runnable() {

@Override
public void run() {
beeperHandle.cancel(true);

}
}, 60*60, TimeUnit.SECONDS);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值