我想在不同线程上的 verx 上运行无限循环。
应该是这样的:
vertx.executeBlocking(future -> {
while(true){
}
//some logic (e.g waiting on blocking-code)
}
事实是,在 vertx 上,即使对于executeBlocking 线程,您也有全局超时,您可以增加该超时。但我想为此执行设置非超时警告,因为它将永远运行
- 我用 vertx 能达到我的目的吗?
- 如果情况 1 为真。如何从超时警告中排除此特定的阻塞执行
你不知道。
如果您有触发处理的条件,则处理会在该点发生,而不是在无限循环内。
Example:
while ((event = eventQueue.take()) != null) {
final Vertx target = event.target;
executor.submit(() -> {
doProcessing(target);
});
}
主要原因是即使处于阻塞状态的线程也会消耗资源。如果有 1000 个线程等待事件,那么系统会在线程调度上浪费大量时间。这就是为什么所有现代 IO 处理都是非阻塞的,其方式与上面的代码类似。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)