假设我有一些代码,因为有时会出现错误
while(true){/*...*/}
我在第三部分库中没有源代码。
在Java中,我可以在CompletableFuture中隔离它。但由于第3方代码不合作超时将无法继续未来。停止自定义线程池也不起作用。我用文字测试了这一点,而真实......'
Java的Thread.stop()已弃用,但可以或多或少地运行。
在Java中使用一段时间之后,我应该如何停止这种永不返回的非合作代码?我应该使用流程吗?
C#和NodeJS的相同问题。
答案 0 :(得分:1)
在c#上下文中,您有Thread.Abort()
,它将尝试拦截每个托管代码执行步骤并停止线程执行。虽然,不建议使用此选项,因为它可能导致线程在被杀死时被丢弃,非托管资源挂起以及其他不需要的行为。
更好的想法是在不同的流程和结束流程中将此第三方代码的执行与您提供的超时结合起来。这会导致更大的性能损失,但您不会冒任何资源或锁定的风险。