- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个线程运行了几乎无限的时间和迭代次数。当找到最佳解决方案时,迭代计数将重置为 0。设置最大迭代次数以防止无限循环。
当所有线程达到最大迭代次数时,我使用倒计时锁存器来停止进程。换句话说,当一个线程达到最大迭代次数时,它会使用 notifyThreadStop() 通知我的主线程,当所有线程停止时,会触发 countdown()。
注意:我的线程在固定线程池 ExecutorService 内运行。
我想添加一个 maxTime 锁存器。所以我所做的是以下
List<Runnable> r = .... //(contains all my runnables)
myExecutorService.invokeAll(r);
if(maxtime > 0){
mylatch.await(maxTime,TimeUnit.Seconds);
(1)
do stuff...
exit;
}
else{
mylatch.await();
myExecutorService.shutdownNow();
do stuff...
exit;
}
现在,我知道如果倒计时触发了闩锁,则意味着所有线程都已停止,因此我可以关闭我的 ExecutorService。
达到最大时间时不会出现这种情况。因此,在(1)中,我想遍历所有运行者,以文明的方式终止它们:-)。为此,我定义了一个函数 requestTermination() ,简单地说,将我的可运行对象中的 iterationCounter 设置为 MaxIterationCount 。
因此 (1) 将变为
for(Runnable runner: r){
if(r.getIsRunning()){r.requestTermination();}
}
(2)
现在,我需要再次等待,直到所有线程真正停止,然后才能继续......嗯,只是想我可以有一个额外的锁存器并使用它。
因此 (2) 将变为
mylatch2.await();
myExecutorService.shutdownNow();
当然,我的函数 notifyThreadStop() 需要对其进行修改,并且需要一个标志告诉它在 mylatch2 而不是 mylatch 上执行 countdown()。
我想我刚刚回答了我的问题,但既然所有这些都已经写下来,我将把它留在这里供其他人引用。
现在的问题是:有更好的方法来处理这个问题吗? (1) 或 (2) 中的 shutdownNow() 是唯一需要的吗? 知道我的线程必须在退出之前关闭自己的日志文件并关闭其内部可调用线程*ss*。
最佳答案
如果您使用 shutdownNow() 和awaitTernimation(),这将中断所有正在运行的任务并等待它们完成。
只要任务可以中断并在中断时正确关闭所有资源,就不会有问题。 (如果有问题,这是您的任务代码中的错误,您应该修复)
关于java - CountdownLatch 结合了await(maxTime) 和countdown(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898961/
我需要修改:时隙持续时间为“00:10:00”minTime 到 '08:00:00'最大时间为“22:00:00”不破坏原始代码 据我所知,我需要 .js 以及我想要进行的更改,并需要 .xml 将
我有几个线程运行了几乎无限的时间和迭代次数。当找到最佳解决方案时,迭代计数将重置为 0。设置最大迭代次数以防止无限循环。 当所有线程达到最大迭代次数时,我使用倒计时锁存器来停止进程。换句话说,当一个线
我有一些验收测试断言某些方法调用花费的时间少于最大值。使用我当前的解决方案,NUnit 将设置时间添加到方法调用中。 如何在没有设置时间的情况下测试方法调用的时间? 当前代码: private ISe
我在周模式下工作,我想将可见时间范围限制为本周最早的事件和本周最晚的事件。 我想解决问题的正确方法是手动过滤本周可见的事件,找到最小和最大时间并将它们设置为 minTime 和 maxTime 属性。
这是我的 solrconfig.xml 文件中的默认设置: ${solr.autoSoftCommit.maxTime:-1} “-1”的 maxTime 是否意味着自动软提交已关闭?如
是否可以在全日历中为每个工作日设置不同的 minTime 和 maxTime(左侧的小时数)? 示例: 周一:08:00 - 18:00 周二:08:00 - 18:00 周三:10:00 - 19:
我已经实现了 fullcalendar v2 资源日历。我无法解决的是根据日期设置动态 minTime 和 maxTime。每天都有不同的工作时间。 Monday 10:00 to 14:00 T
我有一个 FullCalendar 小部件,正在我的网站上使用,演示如下:http://jsfiddle.net/46tnzj72/7/ 我想将开始时间设置为当天的第一个事件,将结束时间设置为当天的最
我需要一个 dataPicker 来选择特定的时间间隔,例如我需要在 1 到 2 小时之间选择 30 分钟 30 的间隔。我想显示禁用其他时间的 dataPicker,允许用户仅选择时间间隔。 目前,
我有一个简单的数据库,其中包含 PRM-8000 的辐射读数。我可以将所有值加载到数据库中。我不能做的是每天每次都获取最大值和最小值。我见过人们在组中使用第一个和最后一个值的示例,但它不适用于我的集合
这就是我要说的: 这就是我所期望的: 复制此内容的最低设置是: $('#calendar').fullCalendar({ defaultView: 'agendaWeek',
我是一名优秀的程序员,十分优秀!