Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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_Threadpool_Threadpoolexecutor - Fatal编程技术网

从线程池同步java线程

从线程池同步java线程,java,multithreading,threadpool,threadpoolexecutor,Java,Multithreading,Threadpool,Threadpoolexecutor,这是我试图解决的问题的一个人为的场景 输入数据:拼图 拼图可能包含10、100、1000、10000、1000000块 您可以得到多个1字谜作为输入 引擎:拼图解算器 组装拼图(显然,拼图的数量与时间成正比) 输出:组合拼图 要求:组装好的拼图必须以相同的方式出来。例如,如果输入P1(1000个)和P2(10个),则输出必须是P1,然后是P2 我已经将引擎线程化,使用线程池来组装拼图,以便一次可以处理许多拼图。然而,在上面的例子中,P2将在P1之前求解,但是我需要将输出多路复用在一起

这是我试图解决的问题的一个人为的场景

输入数据:拼图

  • 拼图可能包含10、100、1000、10000、1000000块
  • 您可以得到多个1字谜作为输入
引擎:拼图解算器

  • 组装拼图(显然,拼图的数量与时间成正比)
输出:组合拼图

  • 要求:组装好的拼图必须以相同的方式出来。例如,如果输入P1(1000个)和P2(10个),则输出必须是P1,然后是P2
我已经将引擎线程化,使用线程池来组装拼图,以便一次可以处理许多拼图。然而,在上面的例子中,P2将在P1之前求解,但是我需要将输出多路复用在一起,以确保P1在P2之前。当然,这是一个简化的示例,因为我希望不断地将输入数据输入到引擎(我目前的默认值为10个线程),因此线程将保持忙碌,但我仍然需要确保输出顺序,而不管有数千个谜题出现


什么是确保我可以使用线程引擎并仍然生成正确输出的好方法?

将在ExecutorService允许的同时执行这些可调用项后,以与提供给它的可调用项相同的顺序返回一个期货列表。虽然我同意这会起作用,但这里的问题是,如果输入11个谜题,第十一个可能在十个拼图全部完成后才开始处理。我会试试看……我不知道你的意思。使用或将同时执行多个任务创建的线程池。