schedule() 和 scheduleAtFixedRate() 的区别--转载

schedule() 和 scheduleAtFixedRate() 都是java.util.Timer类中的方法,用于安排定时任务。下面将详细介绍它们的区别、使用方法以及一些示例。

1. 区别

schedule() 方法用于安排在指定延迟时间之后执行一次任务,也就是说该任务只会执行一次。它的方法签名如下:

```

public void schedule(TimerTask task, long delay)

```

其中,task 是要执行的任务,delay 是指延迟多长时间后执行任务,单位是毫秒。

scheduleAtFixedRate() 方法用于安排任务周期性地重复执行,它的方法签名如下:

```

public void scheduleAtFixedRate(TimerTask task, long delay, long period)

```

其中,task 是要执行的任务,delay 是指延迟多长时间后第一次执行任务,period 是指每次执行任务的时间间隔,单位同样是毫秒。

需要注意的是,如果任务的执行时间超过了指定的时间间隔,就会出现“连续多次执行”的情况。

2. 使用方法

下面是使用 schedule() 方法的示例代码:

```

import java.util.Timer;

import java.util.TimerTask;

public class ScheduleDemo {

public static void main(String[] args) {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

// 执行任务的代码

}

};

// 延迟 1 秒后执行任务

timer.schedule(task, 1000);

}

}

```

下面是使用 scheduleAtFixedRate() 方法的示例代码:

```

import java.util.Timer;

import java.util.TimerTask;

public class ScheduleDemo {

public static void main(String[] args) {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

// 执行任务的代码

}

};

// 延迟 1 秒后每隔 5 秒执行一次任务

timer.scheduleAtFixedRate(task, 1000, 5000);

}

}

```

3. 案例说明

下面是一些使用场景,可以帮助理解 schedule() 和 scheduleAtFixedRate() 的用法。

场景一:程序启动 5 秒后执行某个任务,只执行一次。

```

import java.util.Timer;

import java.util.TimerTask;

public class ScheduleDemo {

public static void main(String[] args) {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

System.out.println("任务执行了!");

}

};

// 延迟 5 秒后执行任务,只执行一次

timer.schedule(task, 5000);

}

}

```

场景二:程序启动后,每隔 10 秒钟执行某个任务。

```

import java.util.Timer;

import java.util.TimerTask;

public class ScheduleDemo {

public static void main(String[] args) {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

System.out.println("任务执行了!");

}

};

// 延迟 0 秒后每隔 10 秒执行一次任务

timer.scheduleAtFixedRate(task, 0, 10000);

}

}

```

场景三:程序启动后,每隔一段时间执行一个固定的任务,但是任务执行的时间可能超过了指定的时间间隔。

```

import java.util.Timer;

import java.util.TimerTask;

public class ScheduleDemo {

public static void main(String[] args) {

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

System.out.println("任务执行了!");

try {

Thread.sleep(20000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

};

// 延迟 0 秒后每隔 10 秒执行一次任务

timer.scheduleAtFixedRate(task, 0, 10000);

}

}

```

以上就是关于 schedule() 和 scheduleAtFixedRate() 的区别、使用方法以及一些示例的介绍。它们都是java.util.Timer类中的方法,可以帮助我们实现定时任务的功能。需要注意的是,scheduleAtFixedRate() 方法可以实现周期性地重复执行任务,但是任务执行的时间不能超过指定的时间间隔,否则会出现“连续多次执行”的情况。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(23) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部