Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 ThreadPoolExecutor线程完成后的完成请求_Java_Multithreading_Java.util.concurrent_Threadpoolexecutor_Hystrix - Fatal编程技术网

Java ThreadPoolExecutor线程完成后的完成请求

Java ThreadPoolExecutor线程完成后的完成请求,java,multithreading,java.util.concurrent,threadpoolexecutor,hystrix,Java,Multithreading,Java.util.concurrent,Threadpoolexecutor,Hystrix,我想在Java微服务中使用隔板。在我的服务方法进行到一半时,我发出了一个外部HTTP请求,该请求当前是同步的,但希望在线程池线程上执行该请求,我可以使用ThreadPoolExecutor来执行。但是在新的线程池线程完成之后,我希望通过该方法的其余部分继续使用原始Tomcat线程,该方法依赖于从线程化外部请求返回的数据。是否有一种方法可以保留原始线程,并使用异步线程中的数据继续使用它 或者我们通常在这里看一个代码重构来处理我的方法的其余部分,它依赖于从线程请求返回的数据?如果您向执行器提交一个可

我想在Java微服务中使用隔板。在我的服务方法进行到一半时,我发出了一个外部HTTP请求,该请求当前是同步的,但希望在线程池线程上执行该请求,我可以使用ThreadPoolExecutor来执行。但是在新的线程池线程完成之后,我希望通过该方法的其余部分继续使用原始Tomcat线程,该方法依赖于从线程化外部请求返回的数据。是否有一种方法可以保留原始线程,并使用异步线程中的数据继续使用它


或者我们通常在这里看一个代码重构来处理我的方法的其余部分,它依赖于从线程请求返回的数据?

如果您向执行器提交一个可调用线程,它将返回一个未来,可以在代码中的稍后点进行评估。但是,如果您需要从另一个线程返回数据,您将不得不在某个时刻阻止执行。@user3169180假设我没有弄错,您希望从对单独的线程运行同步调用、等待它然后继续主线程中获得什么好处?是资源管理/限制吗?队列管理?总之,
Semaphore
类是您的朋友:)我想使用线程池,以便使用超时。你是说舱壁真的只适用于失火和遗忘任务,而不适用于此类需要进一步处理的任务吗?抱歉,我仍然不清楚,我可以使用信号机方法暂停吗?我可以使用线程池切换来实现这一点。同样,我不知道如何在tomcat线程上等待线程池线程完成。实际上,我假设我可以使用从线程池返回的未来等待,然后在线程返回时继续。如果您向执行器提交一个可调用的线程,它将返回一个未来,可以在代码中的稍后点进行计算。但是,如果您需要从另一个线程返回数据,您将不得不在某个时刻阻止执行。@user3169180假设我没有弄错,您希望从对单独的线程运行同步调用、等待它然后继续主线程中获得什么好处?是资源管理/限制吗?队列管理?总之,
Semaphore
类是您的朋友:)我想使用线程池,以便使用超时。你是说舱壁真的只适用于失火和遗忘任务,而不适用于此类需要进一步处理的任务吗?抱歉,我仍然不清楚,我可以使用信号机方法暂停吗?我可以使用线程池切换来实现这一点。同样,我不知道如何在tomcat线程上等待线程池线程完成。实际上,我假设我可以使用线程池返回的future等待,然后在线程返回时继续。