【发布时间】:2017-04-28 13:37:24
【问题描述】:
我正在编写代码,每当遇到文件夹时,它都应该启动一个新线程。代码看起来像, p
ublic void diff(File x,File y){
ThreadPoolExecutor executor=new ThreadPoolExecutor(10,30,2000,unit,BlockingQueue<Runnable> queue)
if(x.isDirecotry && y.isDirectory){
Runnable thread=new DThread(x,y);
Future<?> result=executor.submit(thread);
if(result.isDone()){
LOGGER.debug(thread.toString()+"has completed");
}
我为此目的使用 ThreadPoolExecutor。如果我关闭 ThreadPoolExecutor,那么它不会占用任何新线程。但是有可能在启动后启动新线程。如果我不关闭 ThreadPoolExecutor,那么所有线程都会被执行,但最终 JVM 并没有终止。 请帮助我如何仅在执行所有线程以使 JVM 终止时才关闭线程池。还建议是否有更好的线程池实现方式。我想使用线程池,这样我就可以使用池中的线程,而不是每次都创建新线程。
【问题讨论】:
-
链接问题中提供了更好的答案。 ThreadPoolExecutor 是一个 ExecutorService
标签: java multithreading pool threadpoolexecutor