我使用了Concurrent Pascal,这是一个帮助调试并发算法的工具,因为当它运行你的代码时,它会随机化每个可能步骤交换的线程,尝试尽可能多的路径。
是否有可以执行此操作的JVM?
答案 0 :(得分:2)
我没有知道这样做的商业JVM,但我建议你看看像ConTest这样的工具,试图在你的问题领域帮助你:
通常,因为大多数商业JVM都依赖操作系统来进行线程调度,所以JVM自己做这件事并不自然。 Jikes-RVM的绿色线程版本可能有些东西(可能是旧版本)。
答案 1 :(得分:2)
看一下Java Pathfinder(来自NASA,但它是免费的)。我认为它应该开箱即用,即尝试不同的交错(可能需要一些装配)。
当然,您仍然需要在您感兴趣的数据上指定验证属性,例如不变量。否则,默认情况下它可能只会告诉您是否存在死锁。请查看“探索执行替代方案”部分。