gpt4 book ai didi

java - 在某些条件下可以使用 Thread.suspend() 吗?

转载 作者:行者123 更新时间:2023-12-01 23:53:16 25 4
gpt4 key购买 nike

我想在 java 程序中运行 jUnit 测试用例并在超时后停止运行。为了执行测试,我使用 JUnitCore 的 run(Request) 方法。

测试类包含需要花费大量时间和/或不会终止的方法。因此,我希望能够停止执行。

但是,jUnit 的 pleaseStop 标志仅在测试用例完成后才被考虑,方法不能中断,并且内容(例如可以关闭的已使用 IO 资源)未知。此外,我想避免使用进程。

还有其他方法可以停止单个测试用例的执行吗?

在线程之间不共享任何资源的情况下,使用Thread.suspend()可以吗?

(我读过 Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? )

最佳答案

Would it be ok to use Thread.suspend() under the condition that I don't share any resources among threads?

我想说,对于测试来说,使用已弃用的Thread.suspend()方法应该没问题。我认为重申它被弃用的原因很重要。您可以在线程持有锁时挂起它们,这可能会极大地改变代码的运行方式,甚至导致死锁。

如果可能,我会考虑使用其他机制来实现相同的行为。

引用javadoc:

Deprecated. This method has been deprecated, as it is inherently deadlock-prone. If the target thread holds a lock on the monitor protecting a critical system resource when it is suspended, no thread can access this resource until the target thread is resumed. If the thread that would resume the target thread attempts to lock this monitor prior to calling resume, deadlock results. Such deadlocks typically manifest themselves as "frozen" processes. For more information, see Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?.

关于java - 在某些条件下可以使用 Thread.suspend() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024193/

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