Java - 固定数量任务的ExecutorService

标签 java concurrency executorservice executor

我想使用 Java 中的 ExecutorService 实现以下行为。我有大量任务要完成,这些任务都可以并行完成。我想按以下方式从我的主线程中安排 N 个任务:

  • 如果 Activity 任务的数量是 < N => 安排新任务(执行服务已经这样做了)
  • 否则,在主线程上阻塞,直到完成其中一个任务 => 与将 N 个第一个任务存储在队列中然后将第一个任务出列并对其调用 get() 几乎相同)

有没有办法调整 ExecutorService 来执行上述操作?

最佳答案

使用 N 个线程的 ThreadPoolExecutor,用 SynchronousQueue 构造。每次您向线程池提交任务时,主线程都会被同步队列阻塞,直到池中的线程从队列中获取任务。

关于Java - 固定数量任务的ExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13882115/

相关文章:

java - Twitter4j - 转换为 JSON 的状态仅返回空值

java - 什么正在终止我的 Java ExecutorService

java - DefaultExecutor 不等待结果(异步调用)

java - Jersey 2 - 获取客户端上的基本 URI

java - ClassCastException : org. sonar.java.model.declaration.VariableTreeImpl

java - 高并发系统中的锁定

java - 理解 Java Completablefuture 的行为

java - 什么时候适合多线程?

java - 创建一个自中断的 ExecutorService

java - 从 Java 中的字符串中删除 IP 地址