- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
在这篇文章中,我们将结合实例讨论Executors newSingleThreadScheduledExecutor()方法。
这个方法创建了一个单线程的执行器,它可以安排命令在一个给定的延迟后运行,或者定期执行。(但是请注意,如果这个单线程在关机前的执行过程中由于故障而终止,如果需要执行后续的任务,一个新的线程将取代它的位置。) 任务被保证按顺序执行,并且在任何时候都不会有超过一个任务处于活动状态。与其他相等的newScheduledThreadPool(1)不同,返回的执行器被保证不能被重新配置以使用额外的线程。
语法
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ExecutorsDemo {
public static void main(String[] args) {
ExecutorsDemo demo = new ExecutorsDemo();
demo.newSingleThreadScheduledExecutor();
}
private void newSingleThreadScheduledExecutor() {
System.out.println("Thread main started");
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
// Create a task
Runnable task1 = () -> {
System.out.println("Executing the task1 at: " + new Date());
};
scheduledExecutorService.scheduleAtFixedRate(task1, 0, 2, TimeUnit.SECONDS);
System.out.println("Thread main finished");
}
}
输出
Thread main started
Thread main finished
Executing the task1 at: Mon Sep 10 13:15:57 IST 2018
Executing the task1 at: Mon Sep 10 13:15:59 IST 2018
Executing the task1 at: Mon Sep 10 13:16:01 IST 2018
Executing the task1 at: Mon Sep 10 13:16:03 IST 2018
Executing the task1 at: Mon Sep 10 13:16:05 IST 2018
Executing the task1 at: Mon Sep 10 13:16:07 IST 2018
...............
在这篇文章中,我们将结合实例讨论Executors newSingleThreadScheduledExecutor()方法。 Executors.newSingleThreadScheduledEx
如果我为 ScheduledExecutorService 安排了多个任务,但我已经确定只能有一个线程来执行所有任务,每个任务会按顺序执行吗? 例如:在下面的场景中会发生什么 ScheduledExe
javadoc Executors.newSingleThreadScheduledExecutor 说“...返回的执行器保证不能重新配置以使用其他线程”。 上面这句话是什么意思?这是否意味着返回的
这个问题已经有答案了: ScheduledExecutorService, how to stop action without stopping executor? (2 个回答) 已关闭 6 年前
在 Android 中,我试图启动一个线程,该线程会自行终止或在某个超时限制(例如 20 秒)后被执行程序取消?所以 runnable 只会在那么多秒内完成它的工作而不是取消... 我如何实现这一点?
我的要求是制作一个服务,在特定时间间隔后继续检查队列并处理队列中的元素。 为了在 10 秒后安排任务,我使用: ScheduledExecutorService schd = Executors.ne
这个执行器有什么已知问题吗?还是我用错了?我需要安排上传在单独的线程,我希望在当前上传完成后的特定时间后触发下一次上传。 因此,我的服务实现中有一些代码摘录: ScheduledExecutorSer
如何在不使用 Executors.newSingleThreadScheduledExecutor 的情况下创建具有单线程的 ScheduledThreadPoolExecutor ? 我想这样做的原
我想知道 Executors 类的这两种方法有什么区别?我有一个 Web 应用程序,我每 100 毫秒检查一些数据,这就是为什么我将此调度程序与 scheduleWithFixedDelay 方法一起
我按照以下链接实现了单线程调度执行器 Link to example 我有点困惑为什么在 scheduleAtFixedRate 方法之后调用 schedule 方法。 这里使用schedule方法的
上下文: 这是一个 Jersey 应用程序 在 Tomcat 服务器上运行 使用 Hibernate 连接到 MySQL 数据库 一切都在 Netbeans 我正在创建一个 ScheduledExec
我是一名优秀的程序员,十分优秀!