使用ExecutorService的第一部分看起来不错:
...FetcherRunner runner = new FetcherRunner(routes, start, stop);executorService.submit(runner);
带有Thread的部分不应该在那儿,我假设您在那儿只是为了展示您以前的经历?
更新:
是的,您不需要之后的代码
executorService.submit(runner),最终将产生大量线程。如果您的目标是在循环后等待所有提交的任务完成,则可以
Future在提交任务时获取参考,然后等待
Future,如下所示:
ExecutorService executorService = Executors.newFixedThreadPool(16);List<Future<Result>> futures = ..; for (int j = 1; j < 900+ 1; j++) { int start = (j - 1) * 5000; int stop = (j) * 5000- 1; FetcherRunner runner = new FetcherRunner(routes, start, stop); futures.add(executorService.submit(runner));}for (Future<Result> future:futures){ future.get(); //Do something with the results..}


