Java 在提交给执行者服务的任务之间有延迟

Java 在提交给执行者服务的任务之间有延迟,java,executorservice,Java,Executorservice,我使用的是SpringBoot,我有一个用例,我想将列表中的每个元素提交给executor服务(threadpool size=4)。但是在每一个必须被处理的元素之间,我想要1秒的延迟 sleep(1000)不起作用,因为执行器在一个线程进入睡眠状态后立即启动另一个线程 list().forEach(key -> { executorService.submit(new Runnable() { @Override

我使用的是SpringBoot,我有一个用例,我想将列表中的每个元素提交给executor服务(threadpool size=4)。但是在每一个必须被处理的元素之间,我想要1秒的延迟

sleep(1000)不起作用,因为执行器在一个线程进入睡眠状态后立即启动另一个线程

        list().forEach(key -> {
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    process(key);
                }
            });
        });
编辑:这是我的process()方法,我在最后尝试使用sleep,但没有成功

    private void process(long key) {
        try {
            //processing key

        } catch (SystemException e) {
            // Exception handling
        }
        Thread.sleep(1000);
    }

既然您希望它们在另一个线程上按顺序执行,为什么不使用
ScheduledExecutorService
并轮询列表呢

Iterator Iterator=list().Iterator();
Future=executorService.schedule(()->{
如果(!iterator.hasNext()){
未来。取消(假);
返回;
}
Pojo Pojo=iterator.next();
iterator.remove();
进程(pojo.key());
}

既然您希望它们在另一个线程上顺序执行,为什么不使用
ScheduledExecutorService
并轮询列表呢

Iterator Iterator=list().Iterator();
Future=executorService.schedule(()->{
如果(!iterator.hasNext()){
未来。取消(假);
返回;
}
Pojo Pojo=iterator.next();
iterator.remove();
进程(pojo.key());
}

使用标签来描述你的问题是关于什么的,而不是它包含什么内容。仅仅因为你的应用程序正在使用Spring Boot,并不意味着你需要自动使用[Spring Boot]。你的问题与Spring Boot无关,只与执行器服务有关。两个问题:1.:“但是在必须处理的每个元素之间,我希望有1秒的延迟。”,为什么?2.:你试着把
Thread.sleep(1000)放在哪里
?请提供一个代码,您可以在其中创建
executorService
为什么不让主线程在提交到executorService的两次提交之间休眠?既然您希望它们在另一个线程上按顺序执行,为什么不使用
ScheduledExecutorService
并轮询列表?使用标记描述您的问题关于,而不是它包含的内容。仅仅因为你的应用程序正在使用Spring Boot,并不意味着你需要自动使用[Spring Boot]。你的问题与Spring Boot无关,只是
ExecutorService
。两个问题:1.:“但是在必须处理的每个元素之间,我希望延迟1秒。,为什么?2.:你把
Thread.sleep(1000)放在哪里了
?请提供一个代码,您可以在其中创建
executorService
为什么不让主线程在提交到executorService之间休眠?既然您希望它们在另一个线程上按顺序执行,为什么不使用
ScheduledExecutorService
并轮询列表?