0

我已经从 db 中检索了数千条记录到ArrayList. 我需要根据这些记录形成报告。

如何在 Java 中应用多线程来实现此功能。

4

2 回答 2

3

在不知道您正在尝试的细节的情况下,我会向您指出Executor 教程

使用 Executor 框架允许您将工作拆分为作业(Callables),并且 executor 将并行执行这些作业(使用池等)。您只需查询/等待您的工作完成,而无需处理notify()/ wait()/join()等的复杂性。

API 抽象出池/线程创建问题以及调度和确定您的作业何时完成(和/或异常处理)

于 2012-09-28T11:45:20.847 回答
2

您需要提供更多详细信息,但通常生产者-消费者模式应该可以工作。尝试一些简单的东西,例如ExecutorService

final List<Record> records = //...
final ExecutorService executorService = Executors.newFixedThreadPool(10);
for (final Record record : records) {
    executorService.submit(new Runnable() {
        @Override
        public void run() {
            //process record here
        }
    });
}

此代码将获取每条记录并在最多 10 个线程中并行处理它。当然,这取决于您的要求,您想用它做什么。例如用于Callable<T>返回一些结果,ExecutorCompletionService等待第一个结果等。

于 2012-09-28T11:47:31.753 回答