gpt4 book ai didi

Java多线程文件系统树遍历

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:31 26 4
gpt4 key购买 nike

我的面试有一个小任务(原文如此!)。
我需要创建 java CLI 程序来搜索与某种模式匹配的特定文件。他们说我需要在不使用 util.concurrent 包的情况下使用多线程方法,并在并行 Controller 上提供良好的性能。

从我的角度来看,这非常简单——我可以为每个子文件夹创建特定的线程并运行它的内容,然后为每个子文件夹运行另一个线程...
但这并不是那么容易 :) 也许有人可以向我建议我应该避免的典型陷阱。或者任何关于在 Java 中实现这一点的正确方法的建议将不胜感激。

谢谢!

UPD1
文件名应匹配模式。

最佳答案

问题是找到足够数量的线程并尽可能平均地分配工作。

假设您不知道每个文件夹中的文件和子目录的数量,这可能会变得非常棘手。

这是一个开始的想法:

您可能要做的是创建多个线程,这些线程在中央文件夹列表上运行,并为您遇到的每个文件夹生成一个线程,直到达到某个最大值。然后每个线程都可以将其工作目录的子文件夹放入中央列表,完成后它可能会从该列表中选择下一个。

如果一个文件夹被放入列表并且没有达到最大线程数,一个新的线程会立即产生。

如果线程已用完工作并且文件夹列表为空,它可以停止(如果需要需要您生成一个新的)或等到列表上有一个文件夹或应用程序发出所有文件夹的信号被处理。

最后,不要忘记同步文件夹列表。

希望能帮助您入门。


编辑:(不要太认真地对待以下内容:))

您还可以使用另一个不使用 java.util.concurrent 包的线程池实现:)

编辑 2:基本上我上面描述的是一个简单且特定于任务的线程池实现。您可能会尝试查找有关自己构建线程池的更多信息(在您的任务上下文中,线程池任务将扫描一个文件夹)。

关于Java多线程文件系统树遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com