Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用线程池的理想方法_Java_Multithreading - Fatal编程技术网

Java 使用线程池的理想方法

Java 使用线程池的理想方法,java,multithreading,Java,Multithreading,我有一个web应用程序,我正在从弹性搜索中获取一些ID。获取ID后,我将它们分成1000个批次,每个批次查询数据库以获取这些ID的更多信息。我必须查询数据库的4个不同表,以获取我想要的特定id的所有信息。为了优化它,我使用了一个大小为10的固定线程池,其中包含singleton对象来处理每个1000个不同的批。然后,我从每个线程中创建了一个大小为4的固定线程池,以并行地查询4个表。现在,由于它是一个web应用程序,它将并行接收来自不同用户的请求。由于池的大小,这会造成一个瓶颈,因为所有请求都有一

我有一个web应用程序,我正在从弹性搜索中获取一些ID。获取ID后,我将它们分成1000个批次,每个批次查询数据库以获取这些ID的更多信息。我必须查询数据库的4个不同表,以获取我想要的特定id的所有信息。为了优化它,我使用了一个大小为10的固定线程池,其中包含singleton对象来处理每个1000个不同的批。然后,我从每个线程中创建了一个大小为4的固定线程池,以并行地查询4个表。现在,由于它是一个web应用程序,它将并行接收来自不同用户的请求。由于池的大小,这会造成一个瓶颈,因为所有请求都有一个池(大小为10),所以我只想知道,在这里并行任务的理想方式是什么。

您的实际问题是什么?您在开头提到的10号池是否与您上次提到的相同?为什么要从每个线程创建新的线程池?这似乎违背了一开始就有一个线程池的目的。是的,这两个线程池是相同的。实际上,第一个池实现了Callable,因为我希望它返回项目中使用的自定义对象。第二个线程池(大小为4)只是获取对象的不同属性并进行更新。我没有完全理解您的问题-您没有提供具体的细节来看待您的问题,并且您也没有提出具体的问题(在没有说明理想对您意味着什么的情况下询问“理想方式”很难回答)。我被你的评论弄糊涂了,你的池实现了可调用——这不是线程池所做的。也许你应该更清楚地重申你的问题,把重点放在一些小而具体的问题上。