フォルダー内の多数のファイルを読み取り、スレッドを使用して同時に処理しようとしています。
プログラムの構造は次のようになります。
// Assuming there are 5 files in the directory
// creating the threads
ExecutorService pool = Executors.newFixedThreadPool(5)
ExecutorCompletionService service = new ExecutorCompletionService(pool)
directory.listFiles().each { eachFile ->
service.submit(new FileReader(eachFile, param2))
}
// the FileReader class
class FileReader implements Callable {
File file
String param
FileReader(File file, String param){
this.file = file
this.param = param
}
Object call(){
LOG.info("Processing file" + filePath)
ConfigInfo configInfo = new ConfigInfo()
configInfo.setFilePath(filePath);
configInfo.setReaderUid(readerUid);
configInfo.setPatternsMap(patternsMap);
new LogfileDataProcessor(configObject, param).processFileContent()
}
}
ここで call メソッドは別のオブジェクトを作成し、そのメソッドを呼び出します。
しかし、奇妙なことに、呼び出しメソッドでいくつかの行を実行した後、プログラムが終了します(その最後のステートメントに到達しません)。私はここで混乱しています。誰かが何が起こっているのかに光を当てることができますか. 私を助けてください