Multithreading Java线程的确定性执行,工具支持

Multithreading Java线程的确定性执行,工具支持,multithreading,debugging,jvm,scheduling,Multithreading,Debugging,Jvm,Scheduling,我正在寻找一种工具或api,它允许确定性地执行Java线程以进行测试。因此,允许java代码中的上下文在字节码中的某些位置切换。例如,我希望一个线程t1在字节码/源代码中的第N行抢占另一个线程t2,以此类推。为了使情况更简单,让我们忽略同步或锁。是否有任何工具,如果可能的话,可以使用开源定制JVM。我知道一些工具,比如dejavu、LEAP,但我想知道一些有使用这些工具经验的人推荐的开源工具 干杯, Pulkit我不知道有任何工具可以完全满足您的需求,一般来说,这会很困难,因为JIT等等。。将模

我正在寻找一种工具或api,它允许确定性地执行Java线程以进行测试。因此,允许java代码中的上下文在字节码中的某些位置切换。例如,我希望一个线程t1在字节码/源代码中的第N行抢占另一个线程t2,以此类推。为了使情况更简单,让我们忽略同步或锁。是否有任何工具,如果可能的话,可以使用开源定制JVM。我知道一些工具,比如dejavu、LEAP,但我想知道一些有使用这些工具经验的人推荐的开源工具

干杯,
Pulkit

我不知道有任何工具可以完全满足您的需求,一般来说,这会很困难,因为JIT等等。。将模糊“线”的含义。因此,你要么得到满足你目标的糟糕代码,要么得到不符合你目标的真正代码。无论哪种方式,虫子都可能溜过去。我建议您从一个好的角度来看待如何在这个一般领域进行测试。

这里是不同解决方案的比较:

很有趣。我通常只是设置一组断点,然后随意启动和停止线程。但是它很乏味,容易出错,而且绝对不能自动执行。谢谢特伦特,亚当。我所说的行是指字节码指令。比如说,我希望线程T1在字节码指令X处暂停执行,让另一个线程T2从暂停的地方继续执行,或者如果它应该开始,则从开始执行。我记得读过关于竞赛的文章,但我不认为它是开源的。JIT肯定会改变“字节码指令X”的含义。是的,竞赛不是开源的,但我没有看到任何比这更接近你想要的东西,对不起。。。