【发布时间】:2013-07-08 19:08:03
【问题描述】:
我认为我的代码中有线程泄漏,但我不知道为什么。这是代码 -
foo(String solutionFileName, String SubmissionFileName){
ExecutorService e = Executors.newFixedThreadPool(
Future<BufferedReader> f1 = e.submit(new Builder(solutionFileName));
Future<BufferedReader> f2 = e.submit(new Builder(submissionFileName));
BufferedReader b1=f1.get();
BufferedReader b2=f2.get();
//do a little work
e.shutdown();
}
class Builder{
Builder(String fileName){this.fileName=fileName;}
public BufferedReader call() throws FileNotFoundException{
return new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
String fileName;
}
}
我在 Eclipse 上运行它,问题是当我遇到 FileNotFoundException 时,JVM 并没有死。我必须手动终止它。我不明白为什么...
【问题讨论】:
-
请给我们看可执行代码。
-
@SotiriosDelimanolis 我向你展示了所有相关的代码。
-
请向我们展示可编译和可执行的代码。如果这是伪代码,请务必说明。
-
@SotiriosDelimanolis 我认为这是不言而喻的,因为没有返回类型,gets 没有尝试/捕获它们,我对此做了一些工作评论....即使这样也足以解决我的问题。不需要完整的文件。
标签: java eclipse multithreading jvm resource-leak