繁体   English   中英

ScheduledExecutorService反复更改延迟

[英]ScheduledExecutorService change delay repeatedly

我有一个我想要运行的任务,延迟将不断变化(即 - 没有固定的间隔)。

我想要一个线程并无限循环找到延迟值,将其输入到执行程序中,然后一旦完成该任务,找到新的延迟值等。

我目前的“基本”实施:

long targetTime = findNextTime()/1000;
long currentTime = System.curentTimeMillis()/1000;

delay = targetTime - currentTime;

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3);

Runnable task = new Runnable() {

    public void run() {
        System.out.println("Test Task");

        ScheduledFuture<?> future = scheduler.schedule(this, delay, TimeUnit.SECONDS);
    }
}

我怎样才能找到新的延迟并继续重复这个任务?

我应该轮询以便future完成,然后进行递归循环吗? 我试试这个,我得到一个错误。

有一些答案可以解决这个问题。 重新初始化ScheduledExecutorService中的修复延迟以及如何在运行时更改Spring的@Scheduled fixedDelay

在这里,我支持另一种方法来实现对ExecutorService的重复提交任务

class Task implements Runnable {
    private static Random random = new Random();
    private ExecutorService executor;

    public Task(ExecutorService executor) {
        this.executor = executor;
    }

    @Override
    public void run() {
        try {
            System.out.println(System.currentTimeMillis() + "   Hello World");
            TimeUnit.MILLISECONDS.sleep(random.nextInt() % 100);
            executor.execute(this);
        } catch (Exception e) {

        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM