我正在编写服务器,该服务器可能正在运行恶意代码。为了防止攻击者将线程抛出无限循环,我想强制执行一秒的执行时间限制。
InterruptedException可以陷入无限循环内,从而使攻击者可以保留对线程的控制。因此,Thread.interrupt()不是可接受的解决方案。

我当前的实现是防止敌对线程获取任何资源(包括锁),使用Thread.stop()终止执行,并还原该线程所做的任何更改。我主要的提示是它使用了不推荐使用的Thread.stop()方法;我不喜欢使用不赞成使用的代码。

我想知道是否有一个更受业界认可的解决方案,而没有启动/杀死一个全新的JVM,而这对于我来说将有太多的开销。

最佳答案

杀死线程的唯一方法是使用单独的进程并杀死该进程。 Thread.stop()引发ThreadDeath错误,可以捕获并忽略该错误。即catch(Throwable t) {}
有关Thread.stop()实际执行Does Thread.stop() really stop a Thread?的更多详细信息

09-18 14:44