如何实现 ExecutorService 来轮流执行任务?

2023-11-25

我在用着java.util.concurrent.ExecutorService with 固定线程池执行任务列表。我的任务列表通常约为 80 - 150 个,并且我将任何时间运行的线程数限制为 10 个,如下所示:

ExecutorService threadPoolService = Executors.newFixedThreadPool(10);

for ( Runnable task : myTasks ) 
{     
    threadPoolService.submit(task); 
}

我的用例要求即使已完成的任务也应该重新提交给执行服务但只有当所有的already提交的任务已得到服务/完成。也就是说,提交的任务基本上应该轮流执行。因此,也不会有threadPoolService.shutdown() or threadPoolService.shutdownNow()在这种情况下请致电。

我的问题是,我该如何实施执行服务服务轮换基础任务?


ThreadPoolExecutor 为 afterExecution 提供了一个扩展点,您可以在其中将作业放回到队列的末尾。

public class TaskRepeatingThreadPoolExecutor extends ThreadPoolExecutor {

    public TaskRepeatingThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
    }

    @Override
    protected void afterExecute(Runnable r, Throwable t) {
        super.afterExecute(r, t);
        this.submit(r);
    }
}

当然,您需要做更多的工作来自己实例化它,而无需借助ExecutorService很方便的工厂方法,但构造函数很简单,很容易理解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现 ExecutorService 来轮流执行任务? 的相关文章

随机推荐

  • 如何使用 ggplot2 从 qcc 包重现 pareto.chart 图?

    我一直在使用 R 中 qcc 包中的 pareto chart 函数 我真的很喜欢它 现在我想移植所有图形以使用 ggplot2 包 然而 尽管有出色的文档 但我对 ggplot2 的了解非常有限 因此我无法弄清楚所有细节 基本上我想要一个
  • 如何生成 a[i] != i 的排列?

    假设我有一个整数数组int a 0 1 N 1 where N的大小是a 现在我需要生成所有排列a s that a i i对全部0 lt i lt N 你会怎么做 下面是一些 C 实现的算法 该算法基于递归的双射证明 n n 1 n 1
  • Android 通用用户代理 (UA)

    我正在构建一个 Android 应用程序来显示来自服务器的内容源 服务器是一个移动网站 例如http m google com 它跟踪来自各种移动客户端的流量 为了区分 Android 客户端 如何为我的应用程序提供通用字符串 这就是我问这
  • 是否可以在索引视图中使用 LabelFor 作为标题行

    我正在尝试在 ASP NET MVC 索引视图中利用 DataAnnotation 值 有趣的是 代码生成器使用字段名称 例如 BlogPost 而不是Html LabelFor m gt Model ColumNames BlogPost
  • java中整数线程递增是安全的吗?

    Java代码 public class IncreaseTest public static int value 0 public synchronized int increment return value 是方法increment 线
  • 如何从 Java 代码中编写乐观锁和悲观锁

    我知道什么是乐观锁和悲观锁 但是当你编写java代码时你会怎么做呢 假设我将 Oracle 与 Java 结合使用 JDBC 中是否有任何方法可以帮助我做到这一点 我将如何配置这个东西 任何指示将不胜感激 您可以通过这种方式在数据库表中实现
  • 如果文件名为 _ViewStart.cshtml,Razor 布局将不起作用

    我有一个 MVC3 Web 应用程序 我想开始使用整个 Razor 视图 该网站的大部分内容都可以与 Site Master 配合使用 因此我已将其大部分内容打包到部分视图中 并尝试添加具有相同内容的布局 阅读 Scott Gu 的博客后
  • 如何在运行时轻松地在 PyQt 或 PySide 之间进行选择?

    我想在一个源文件 QT py 中执行类似的操作 import sys import PyQt4 sys modules Qt PyQt4 然后将此文件导入到其他源文件中 并像这样使用它 import QT from Qt QtCore im
  • 没有外部“C”的动态加载

    我想一般使用 libdl 动态加载 C 问题是在运行时识别名称已被破坏的符号 如此处所述 一种解决方案是使用 extern C 删除名称修饰 http www tldp org HOWTO C dlopen theproblem html
  • 编辑模式下的自定义 UITableViewCell 不会移动我的 UILabels

    这让我很头疼 我有一个功能齐全的 CoreData PopulatedUITableView里面一个UIViewController我已经成功实现了 滑动删除选项 这很容易 我还可以使用出现红色圆圈的编辑按钮删除单个实例 我的问题是 我认为
  • CryptoJS AES 加密和 Java AES 解密

    我之所以问这个问题 是因为我这两天读了很多关于加密 AES 加密的文章 就在我以为我明白了的时候 我意识到我根本没有明白 这篇文章是与我的问题最接近的一篇 我有完全相同的问题 但尚未得到解答 CryptoJS AES 加密与 JAVA AE
  • 在 ASP.NET MVC Core 中显示/编辑货币,为什么这么复杂?

    在 ASP NET Core 2 0 应用程序中 我有一个Foo与 一起上课a lot经典字符串或数字成员以及int Budget field using Microsoft AspNetCore Http using System usi
  • jQuery-File-Upload 在 Internet Explorer (IE9) 中未触发完成回调

    我检查了有关同一问题的一些问题 blueimp jquery 文件上传 完成 完成 回调不适用于 IE 9 但即使将我的 Content Type 设置为 text html 作为响应 done 回调也不会被触发 另外 正如 jQuery
  • 在 Python 中嵌入 Matplotlib 动画(谷歌 colab 笔记本)

    我正在尝试在 google 的 colab research 中显示 gif 文件 我能够将文件保存在具有以下路径名的目录中 content BrowniamMotion gif但我不知道如何在我的笔记本中显示这个 GIF 来呈现 到目前为
  • 如何将 JCIFS 与 apache VFS 结合使用来访问 SMB URL?

    我正在尝试使用 smb URL 访问本地计算机上的文件夹 我的项目正在使用 jar commons vfs2 2 0 jar 和 jcifs 1 3 17 jar 以及所有其他所需的 jar 完整的代码是 public static voi
  • 谁能通俗地解释一下 JSONP 是什么? [复制]

    这个问题在这里已经有答案了 I know JSONP is JSON带衬垫 我了解 JSON 是什么以及如何使用它jQuery getJSON 不过我不太明白这个概念callback在引入JSONP时 谁能向我解释这是如何工作的 Prefa
  • 在连接的 iPhone 上启动已安装的应用程序

    我正在尝试为一些 iOS 应用程序推出自动化测试解决方案 我正在使用fruitstrap将编译的应用程序传输并安装到连接的iPhone上 但我正在努力寻找一种在安装完成后自动启动应用程序的方法 Fruitstrap 有一个在 GDB 调试器
  • 有谁知道好的ajax脚本加载器

    有谁知道ajax脚本加载器 它允许延迟加载js和css文件 并且还包含可以在外部脚本中定义的依赖项列表 为什么不使用http unwrongest com projects lazy
  • 从 Rails 的 HTML 页面生成 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个将 HTML 视图页面从 Rails 转换为 PDF 的工具 我希望样式保持完整并且应该能够识别 CSS 样式 我听说过 Prince XML 和 Wicked PDF
  • 如何实现 ExecutorService 来轮流执行任务?

    我在用着java util concurrent ExecutorService with 固定线程池执行任务列表 我的任务列表通常约为 80 150 个 并且我将任何时间运行的线程数限制为 10 个 如下所示 ExecutorServic