我@Async
在我的代码中使用从 Rest 控制器到 3 个不同方法的 3 个并行调用。
根据我对servlet的理解(这可能是错误的),当spring@RestController
方法接收到请求时,会为其创建一个线程,此后对于每个新请求都会创建一个新线程。
请求线程 1 - 创建了 3 个异步线程
请求线程 2 - 创建了 3 个异步线程
现在 spring/Request 线程如何知道哪 3 个异步线程属于哪个线程,即请求线程 1 或请求线程 2。
可能有某种映射告诉他们。
我尝试@Async
在线搜索,但很少有关于其工作的文档。谷歌充斥着如何使用代码但无法正常运行。
@Async
底线 - 有人可以解释一下代码的工作/线程管理吗
更新图像以获得更好的解释:
1) 请求 1 进来并产生 3 个线程(A1、A2 和 A3),因为它是一个带有响应 R1、R2 和 R3 的异步调用。
2)请求2进来并做同样的事情,即请求:A4,A5和A6,响应为R1,R2和R3 ..
3)现在我的问题是R1,R2和R3如何意识到它们是相同的请求,即请求 1。如果它是一个顺序调用,那么同一个线程将从开始传播到结束。但是在创建 6 个异步请求之后,我只能在线程转储中看到 6 个线程,并且没有线程作为请求 1 或请求 2。
那么在 R1、R2 和 R3 完成时,请求 1 如何完成,但在 R1 完成时没有, R2 和 R6请求 1 从 R1 、 R2 和 R3 完成的记录是谁和在哪里保存的。