ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor

我有一个程序,可以定期检查网页中的新数据,然后下载并将其转换为另一种格式。因为一个数据集的下载主要是等待,所以可以通过在下载另一个数据集时处理一个数据集来加快程序运行,因此我想使用多线程。不幸的是,即使我将执行程序构造函数参数corePoolSize设置为大于1,ScheduledThreadpoolExecutor.scheduleAtFixedRate()也会阻塞直到一个Runnable完成。

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class Downloader
{
    public static void main(String[] args)
    {
        ScheduledThreadPoolExecutor e = new ScheduledThreadPoolExecutor(4);
        e.scheduleAtFixedRate(new Scheduler(), 0, 1, TimeUnit.SECONDS);
        e.scheduleAtFixedRate(new Scheduler(), 1, 1, TimeUnit.SECONDS);
    }
}

最佳答案

将任务分为两个子任务,并分别在其自己的线程池中安排它们。

您可能有X个线程执行下载任务并将工作排队到作业队列中,而Y个处理线程则使工作项出队并对其进行处理。

关于java - 如何同时运行ScheduledThreadPoolExecutor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26970658/

10-13 23:45