我有一个方法在执行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();
}
此代码适用于没有无限循环的脚本。但是,如果存在无限循环,则响应“It ran!”交付给客户端,但线程仍然活着。如何在join()
之后杀死此线程?
http://stackoverflow.com/questions/6210045/bullet-proof-groovy-script-embedding –