Java 使用线程池的理想方法
我有一个web应用程序,我正在从弹性搜索中获取一些ID。获取ID后,我将它们分成1000个批次,每个批次查询数据库以获取这些ID的更多信息。我必须查询数据库的4个不同表,以获取我想要的特定id的所有信息。为了优化它,我使用了一个大小为10的固定线程池,其中包含singleton对象来处理每个1000个不同的批。然后,我从每个线程中创建了一个大小为4的固定线程池,以并行地查询4个表。现在,由于它是一个web应用程序,它将并行接收来自不同用户的请求。由于池的大小,这会造成一个瓶颈,因为所有请求都有一个池(大小为10),所以我只想知道,在这里并行任务的理想方式是什么。您的实际问题是什么?您在开头提到的10号池是否与您上次提到的相同?为什么要从每个线程创建新的线程池?这似乎违背了一开始就有一个线程池的目的。是的,这两个线程池是相同的。实际上,第一个池实现了Callable,因为我希望它返回项目中使用的自定义对象。第二个线程池(大小为4)只是获取对象的不同属性并进行更新。我没有完全理解您的问题-您没有提供具体的细节来看待您的问题,并且您也没有提出具体的问题(在没有说明理想对您意味着什么的情况下询问“理想方式”很难回答)。我被你的评论弄糊涂了,你的池实现了可调用——这不是线程池所做的。也许你应该更清楚地重申你的问题,把重点放在一些小而具体的问题上。Java 使用线程池的理想方法,java,multithreading,Java,Multithreading,我有一个web应用程序,我正在从弹性搜索中获取一些ID。获取ID后,我将它们分成1000个批次,每个批次查询数据库以获取这些ID的更多信息。我必须查询数据库的4个不同表,以获取我想要的特定id的所有信息。为了优化它,我使用了一个大小为10的固定线程池,其中包含singleton对象来处理每个1000个不同的批。然后,我从每个线程中创建了一个大小为4的固定线程池,以并行地查询4个表。现在,由于它是一个web应用程序,它将并行接收来自不同用户的请求。由于池的大小,这会造成一个瓶颈,因为所有请求都有一