我有一种方法,在Groovy脚本执行完毕后返回HTTP响应。我创建了一个匿名线程来执行Groovy脚本。但出于预防措施,我想要该线程在3秒后停止,以防止糟糕的脚本(如:无限循环)继续运行。
public Response runScript(String script) {
GroovyShell shell = new GroovyShell();
Thread thread = new Thread() {
public void run() {
Script validatedScript = shell.parse(script);
validatedScript.run();
}
};
thread.start();
thread.join(3000);
return Response.ok("It ran!", MediaType.TEXT_PLAIN).build();
}
这段代码对于没有无限循环的脚本工作得很好。然而,如果存在无限循环,响应“它运行了!”将被发送到客户端,但线程仍然存活。在join()
后如何终止此线程?