Executors执行器 newSingleThreadScheduledExecutor() 方法示例

x33g5p2x  于2022-10-06 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(995)

在这篇文章中,我们将结合实例讨论Executors newSingleThreadScheduledExecutor()方法。

Executors.newSingleThreadScheduledExecutor()方法

这个方法创建了一个单线程的执行器,它可以安排命令在一个给定的延迟后运行,或者定期执行。(但是请注意,如果这个单线程在关机前的执行过程中由于故障而终止,如果需要执行后续的任务,一个新的线程将取代它的位置。) 任务被保证按顺序执行,并且在任何时候都不会有超过一个任务处于活动状态。与其他相等的newScheduledThreadPool(1)不同,返回的执行器被保证不能被重新配置以使用额外的线程。

语法

ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();

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
...............

相关文章