我的應用程序有自己的線程池(myThreadPool),我正在分配它的一個線程(Producer)來通過java stream API讀取文件。但是在運行時,流在某處丟失,永遠不會達到打印方法。但是當我在單線程環境中運行流時,它可以工作。是否發生這種情況是因爲java流Api在其底下使用了自己的線程池,或者這在概念上是錯誤的?在已有的多線程環境中使用Java Stream API
public class Processor {
public void process() {
ExecutorService myThreadPool = Executors.newFixedThreadPool(3);
myThreadPool.execute(new Producer());
}
private class Producer implements Runnable{
@Override
public void run() {
try (Stream<String> lines = Files.lines(Paths.get("Path"))) {
System.out.println(lines.count());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
我看不出有任何理由爲什麼這應該不完整。然而,這不是你的實際代碼,也就是說,你沒有說明你如何處理潛在的'IOException'或者'filePath'確實來自哪裏,所以有些東西可能在你沒有的代碼部分出錯所示。 – Holger
是的,我只是張貼需要的部分,但現在更新,以避免混淆;) – Malith