Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java线程:线程之间的ExecutorService延迟_Java_Multithreading - Fatal编程技术网

Java线程:线程之间的ExecutorService延迟

Java线程:线程之间的ExecutorService延迟,java,multithreading,Java,Multithreading,我知道使用睡眠方法延迟线程的传统方法。我的问题应该是我有以下几点: ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 有没有一种方法可以说使用ExecutorService类在每个线程之间有一个延迟而不使用sleep方法?我的意思是ExecutorService类中是否有用于此目的的方法?您是指类似的方法吗 ScheduledExecutorService service = Executors.newSch

我知道使用睡眠方法延迟线程的传统方法。我的问题应该是我有以下几点:

ExecutorService threadExecutor = Executors.newFixedThreadPool(5);  

有没有一种方法可以说使用ExecutorService类在每个线程之间有一个延迟而不使用sleep方法?我的意思是ExecutorService类中是否有用于此目的的方法?

您是指类似的方法吗

ScheduledExecutorService service = Executors.newScheduledThreadPool(5);

service.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS);
如果你想要三个任务,10秒间隔你可以做

service.execute(task1);
service.schedule(task2, 10, TimeUnit.SECONDS);
service.schedule(task3, 20, TimeUnit.SECONDS);

“每个线程之间的延迟”是什么意思?您是否在执行每个提交的任务之间有延迟?您能说出延迟的原因吗?大多数时候,你会让Runnables/Futures使用某种阻塞。此外,您需要什么功能使sleep()不适合使用?类文档中没有列出任何内容。我认为您可以使用ScheduledExecutorService(它是ExecutorService的子接口)“scheduleAtFixedRate”方法来指定延迟。@yapkm01:the executor不“提交线程”,它提交任务,通常提交给预先存在的线程。由于术语混乱,不清楚您在这里问什么。我认为上面的问题会导致特定任务的周期性延迟,这意味着相同的任务在周期性运行。我想要的是任务之间的延迟,例如任务1(runnable obj1)首先运行,任务2(runnable obj2)在提交runnable obj1 10秒后开始运行。我想知道这是否可以通过Executor服务或其他方式实现。。