gpt4 book ai didi

java - 如何杀死不可中断的线程?

转载 作者:行者123 更新时间:2023-11-29 09:16:28 25 4
gpt4 key购买 nike

我们运行一个 AI编程竞赛,参赛者将编写一个 AIJVM 上运行使用我们的 API我们提供它们。我们通过限制他们可以用 SecurityManager 做什么来将他们放入沙箱中。 ,并且在运行时他们只是设置几个标志,这是他们的决定。我们的系统和他们之间的唯一互动 AI是通过这些标志,所以如果他们的线程突然死亡,对我们没有坏影响。

AI计算时间太长,我们想关闭他们的线程。但是,我们无法找到一种方法来保证我们会销毁他们的线程。一个可能的原因是 AI进入无限循环,没有阻塞,使得 Thread.interrupt()无用。 Thread.stop()是不可靠的,因为如果它们在 try catch block 中,ThreadDeath异常将被捕获,并且对我们来说没有问题,因为他们不会接触任何不好的东西,我们不在乎他们是否死亡。

目前我们只是忽略他们的线程并在他们超时后继续在没有他们的情况下继续,但他们的无限循环将继续在后台处理直到JVM。死了。这对我们来说是 Not Acceptable ,因为我们将在后台 24/7 全天候在 Web 服务器上运行比赛,因此我们希望尽可能稳定。一个想法是在单独的 JVM 中运行每个游戏,但这比我们想要的要复杂得多。

有没有可靠的方法来销毁线程?

最佳答案

为他们提供一个他们必须定期调用的方法,即使在他们计算期间也是如此。如果您判断它们“死了”,则让该方法永远 hibernate 。显然,如果他们真的死了,他的方法将不起作用,但你应该捕获大多数问题。

关于java - 如何杀死不可中断的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9118715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com