我的应用程序有自己的线程池(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