- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 ThreadPoolExecutor 之类的东西来管理在可用线程上运行一堆任务。这些任务都是同一类型,但处理不同的帐户。可以定期添加这些帐户的新任务,我希望它进行检查,并且在同一帐户的旧任务完成之前不允许启动新任务。最好的方法是什么?
帐户“234”的任务已启动(通过 ThreadPoolExecutor.execute())
帐户“238”的任务已启动(通过 ThreadPoolExecutor.execute())
帐户“234”的新任务已创建,但未添加执行,因为第一个“234”任务未完成(检查此任务的最佳方法?)
帐户“238”的任务已完成
帐户“238”的新任务启动(通过 ThreadPoolExecutor.execute()),因为当前没有为该帐户运行
最好的方法是什么?只需使用 wait/sleep() 检查 Runnable 中的某些检查变量即可完成“234”的第一个任务?或者有更好的解决方案吗?
最佳答案
毫无疑问,对这部分 API 有更多经验的人会有更好的想法,但以下是我对此主题的想法...
基本上,我会从“运行”和“等待”队列开始。 “正在运行”队列跟踪当前正在运行的任务,“等待”队列跟踪您阻止的任务。这些队列需要输入某种“组标识符”,以便更容易查找(即 Map<String, List<Runnable>
),例如您的帐号
我会考虑覆盖 execute
方法。在这里,我将传入的任务与正在运行的队列进行比较,以确定当前是否有任何相关任务正在运行。如果有,我会将新任务放入等待队列中。
然后我会覆盖 beforeExecute
方法。在这里,我会将任务注册到“正在运行”队列中。
我会重写“afterExecute”方法。在这里,我将从“正在运行”队列中删除已完成的任务,查找等待任务的队列(通过已完成任务的组标识符),并通过execute
将队列中的第一个任务添加到执行器中。方法
或者你可以按照路易斯的建议去做:P
关于java - 在 Java 中将新任务添加到线程池之前等待任务完成的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998519/
我想知道:是否有任何 API 或任何方式来访问 Windows 10 上的任务 View 功能窗口或矩形? Windows10 中的 C++ WinAPI 是否即将推出? 我需要在任务 View 模式
我是一名优秀的程序员,十分优秀!