【发布时间】:2014-05-10 00:10:00
【问题描述】:
我已经用 N 个线程初始化了一个 exectuor 服务。在 N 个线程完成后,我想等待一段时间,然后用 N 个线程的新实例重用执行器。我该怎么做?
这是我正在使用但失败的示例代码:
int NumberOfThreads=Integer.parseInt(PropertyHandler.getProperty("numberOfThreads"));
ExecutorService executor = Executors.newFixedThreadPool(NumberOfThreads);
log.info("Executor class has been initialized");
while (true) {
jobStack = MrMestri.buildJobs();
log.info("Creating a job stack of the search urls");
if (jobStack.isEmpty())
{
Thread.sleep(10000);
}
else {
int jobToken = 0;
while (jobStack.size() > 0) {
jobToken++;
MrRunnable worker = new MrRunnable(jobStack.pop());
executor.execute(worker);
if (jobToken% Integer.parseInt(PropertyHandler.getProperty("totalTrends")) == 0) {
log.info("All jobs for the clock cycle complete , waiting for next clock cycle to start. Number of jobs completed " + jobToken);
executor.shutdown();
Thread.sleep(milliseconds);
}
现在我正在使用 executor shutdown ,没有 executor 来执行我的线程。而且我的线程实现了可运行。
任何快速响应都会有很大帮助。谢谢。
【问题讨论】:
-
可能是 executor.awaitTermination ?
-
当你使用 executor.shutdown() 时使用等待终止。或者至少它看起来像什么或什么时候超时。我不知道我可以在那里设置什么时间,因为我的一些回复可能需要时间。所以我不认为我想走那条路。
标签: java multithreading executorservice