Spring异步和分时度假

时间:2018-10-31 12:35:15

标签: java spring multithreading concurrency

我正在尝试使用Java Spring创建一种体系结构,该体系结构将具有多个后台进程,这些进程将同时运行,并在它们从不同的ZMQ套接字到达时侦听并提取信息。

我不确定执行此操作的最佳方法。现在,我在TaskPoolExecutor中使用@Async批注,但是@Async函数似乎正在阻止堆栈中的下一个函数调用。

所以我的问题是 1)@Async函数会阻止堆栈中的下一个函数调用吗?否则它将在新线程中触发该功能,并继续在当前线程中执行该功能。 2)有什么方法可以赋予每个线程相等的计算能力时间片。 3)还有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. @Async将使用来异步运行带注释的方法 指定的执行人。
  2. 无法控制操作系统资源 专用于线程。
  3. Java有一个非常方便的 CompletableFuture用于异步计算的API。我有 最近写了一篇有关@Async问题以及如何解决问题的博客文章 可以使用CompletableFutureDemystifying the Magic of Spring: @Async解决。