Java中带有约束的并发请求处理

Mic*_*ael 7 java concurrency java.util.concurrent

假设我需要处理3种类型的请求:A,B和C,如下所示:

  • 请求同时处理.
  • 至多 K(<= 3)的请求被同时在同一时间处理.
  • 不能同时处理相同类型的请求.

更一般地,类型的数量是N并且并发请求的数量是K <= N.

你将如何在Java中实现它java.util.concurrent

Ram*_*oza 0

我会创建三个Executors.newFixedThreadPool(1)

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int)

并使用工厂委托为任何执行者执行每次执行。

ExecutorService executor = ThreadFactory.getExecutorForRequest(RequestType type);
executor.execute(request);
Run Code Online (Sandbox Code Playgroud)