【发布时间】:2020-09-22 20:51:43
【问题描述】:
ScriptEngineManager scriptEngineMgr = new ScriptEngineManager();
ScriptEngine jsEngine = scriptEngineMgr.getEngineByName("nashorn");
Mono.fromRunnable(() -> {
System.out.println("11111");
try {
System.out.println("2222");
jsEngine.eval("print(\"hello\");while(1);");
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("3333");
}).timeout(Duration.ofMillis(2000)).doOnError(Exception.class, e -> {
System.out.println("4444");
System.out.println(e.toString());
}).onErrorResume(Exception.class, e -> {
System.out.println("5555");
return Mono.error(e);
}).block();
System.out.println("end!!!");
此代码永远不会结束。 它显示“java.util.concurrent.TimeoutException:在'source(MonoRunnable)'中2000毫秒内没有观察到任何项目或终端信号(并且没有配置回退) ”。
我想在 2 秒后终止它,然后看到“结束!!!”。
我该如何解决这个问题?
【问题讨论】:
标签: java spring spring-boot spring-webflux reactive