gpt4 book ai didi

java - 如何在 Java 中实现多线程池

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:38:46 24 4
gpt4 key购买 nike

我有一个使用线程的场景。

首先我有一个文件夹,里面有经常更新的文件。因此,我编写了一个线程来读取文件夹的内容并将文件名写入静态列表,并在有新文件进入时更新列表。

其次,我写了另一个线程,它从列表中获取文件名并对文件进行一些处理。

这两个线程连续运行,一个检查新文件,一个处理新文件。

现在我需要在运行三个线程的情况下一次处理三个文件。当一个线程完成处理时,另一个线程从列表中获取另一个文件名并启动进程。

所以我需要一些机制来拥有三个线程并检查它们是否存在并相应地启动一个新线程并且文件列表也经常更新。

我还查看了 ExecutorService,但是当列表更新时我无法提供更新列表。

谢谢,桑迪普

最佳答案

基于现有答案,您的代码将类似于:

    final ExecutorService executor = Executors.newFixedThreadPool(2);

final FilePoller poller = ...
final FileProcessor processor = ...

new Thread(new Runnable()
{
@Override
public void run()
{
while (true)
{
final File file = poller.pollForFile();
executor.submit(new Runnable() { public void run() { processor.processFile(file); } } );
}
}
});

假设您的处理器可以跟上轮询器的速度,这很好,否则您需要在提交给执行器之前加入一些节流机制。

关于java - 如何在 Java 中实现多线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113501/

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