2

调试器有没有办法在让其他线程运行的同时暂停特定线程?我想验证我拥有的一些锁是否正常工作,但我不确定如何引发某些情况。请注意,所有线程都通过相同的代码运行,因此对代码的任何更改都会影响所有线程,因为我只想停止一个线程。

4

4 回答 4

1

您可能想查看MultithreadedTC之类的测试框架- 它允许您在测试期间以编程方式控制流经不同线程的流程,以便您可以在测试期间导致竞争条件和超时。

于 2013-07-02T19:33:35.900 回答
0

如果您在代码中有一个方便的点来为该单个线程设置断点,则可以Suspend Policy在其属性中更改该断点的 ,以仅停止当前线程而不是整个 VM。

于 2013-07-02T19:13:40.630 回答
0

通过基本上将以下代码放入线程代码中,我能够解决我自己的问题 -

if(Thread.currentThread.getName()="thread1"){
    Thread.currentThread.sleep(5000);
}

这样只有线程 1 休眠。它工作得很好,我看到我的锁在工作,但我觉得这不是一个很好的解决方案。也许有人可以做得更好?

于 2013-07-02T19:27:26.967 回答
0

您可以添加一个方法来在线程中进行睡眠。然后您可以使用 junit 或简单的 POJO 调用该方法。

于 2013-07-02T19:20:07.793 回答