为什么即使子任务执行,以下内容也永远不会完成? miner.mine
执行了一些我可以看到已完成的数据库插入,但提示永远不会回来。
private void run(Path path) {
findAllFilesInDirectory(path).forEach(
p -> ForkJoinTask.adapt(() -> miner.mine(p)).invoke());
}
private Stream<Path> findAllFilesInDirectory(final Path path) {
try {
return find(path, 1,
(p, fileAttributes) -> fileAttributes.isRegularFile());
} catch (IOException e) {
LOGGER.error("There was an error processing path: {}.", path);
return Stream.empty();
}
}
答案 0 :(得分:0)
即使在执行数据库操作时,显然将EntityManagerFactory创建为静态变量也会导致此问题。关闭EMF解决了问题,但由于EMF是线程安全的(但EntityManager不是),因此每次访问数据库时都没有理由创建和关闭EMF。它可能是一个Hibernate问题,我没有进一步调查。我转而使用Spring Boot Data JPA。