Java 如何将数千条记录传递给线程?

Java 如何将数千条记录传递给线程?,java,multithreading,Java,Multithreading,我从db中检索了数千条记录到ArrayList。 我需要根据这些记录形成报告 如何在Java中应用多线程来实现此功能。如果不知道您正在尝试的具体内容,我将向您指出 使用Executor框架可以将您的工作拆分为多个作业(可调用),Executor将负责并行执行这些作业(使用池等)。您只需查询/等待作业完成,而不必处理notify()/wait()/join()等的复杂性 API抽象出了池/线程创建问题,以及调度和确定作业何时完成(和/或异常处理)在不知道您正在尝试的具体操作的情况下,我将向您指出

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


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

如果不知道您正在尝试的具体内容,我将向您指出

使用Executor框架可以将您的工作拆分为多个作业(可调用),Executor将负责并行执行这些作业(使用池等)。您只需查询/等待作业完成,而不必处理
notify()
/
wait()
/
join()
等的复杂性


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

在不知道您正在尝试的具体操作的情况下,我将向您指出

使用Executor框架可以将您的工作拆分为多个作业(可调用),Executor将负责并行执行这些作业(使用池等)。您只需查询/等待作业完成,而不必处理
notify()
/
wait()
/
join()
等的复杂性


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

您需要提供更多详细信息,但一般来说生产者-消费者模式应该可以工作。尝试一些简单的方法,例如:

最终列表记录=/。。。
final ExecutorService ExecutorService=Executors.newFixedThreadPool(10);
用于(最终记录:记录){
executorService.submit(新的Runnable(){
@凌驾
公开募捐{
//这里有流程记录
}
});
}

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

您需要提供更多详细信息,但一般来说,生产者-消费者模式应该有效。尝试一些简单的方法,例如:

最终列表记录=/。。。
final ExecutorService ExecutorService=Executors.newFixedThreadPool(10);
用于(最终记录:记录){
executorService.submit(新的Runnable(){
@凌驾
公开募捐{
//这里有流程记录
}
});
}

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

您使用的是什么语言?您当前的代码是什么?我希望有3年SO经验的人知道问题的内容。他正在使用java(现在修改了问题)。请编辑您的问题以显示您的工作。你试过什么?有代码示例吗?这个问题很模糊。你用的是什么语言?您当前的代码是什么?我希望有3年SO经验的人知道问题的内容。他正在使用java(现在修改了问题)。请编辑您的问题以显示您的工作。你试过什么?有代码示例吗?否则这个问题就很模糊了。
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
        }
    });
}