我们正在向数据库插入一个包含9百万个对象(文件+文件夹)的目录。我们使用的是Java8 NIO2 Files.WalkFileTree版本的多线程版本。
问题(我们真正需要帮助的地方) 我们使用fork -join池进行线程管理。 MAX线程数设置为1200。 - 最初在preVisitDirectory中 - 为父目录创建线程,从而增加线程数。 - 一旦线程数达到1200,就不会创建新线程。 - 因此,基本上在不平衡的文件树中 - 逻辑归结为从某个点遍历的单线程文件树。 - 为父目录创建的线程只是坐着并等到子目录返回。这是一种浪费。 - 因此,在初始高速率(以及高CPU使用率)之后,速率会下降。