2

コードにスレッド リークがあると思いますが、その理由はわかりません。ここにコードがあります -

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 が停止しないことです。手動で終了する必要があります。理由はわかりませんが...

4

3 に答える 3