【发布时间】:2010-05-04 05:04:50
【问题描述】:
我使用了 Concurrent Pascal,这是一种有助于调试并发算法的工具,因为当它运行您的代码时,它会随机化在每个可能的步骤中交换到哪个线程,并尝试尽可能多的路径。
有没有 JVM 可以做到这一点?
【问题讨论】:
标签: java multithreading debugging jvm concurrency
我使用了 Concurrent Pascal,这是一种有助于调试并发算法的工具,因为当它运行您的代码时,它会随机化在每个可能的步骤中交换到哪个线程,并尝试尽可能多的路径。
有没有 JVM 可以做到这一点?
【问题讨论】:
标签: java multithreading debugging jvm concurrency
看看Java Pathfinder(不过来自 NASA,而且它是免费的)。我认为它应该可以满足您开箱即用的需求,即尝试不同的交错(可能需要一些组装)。
当然,您仍然需要在您感兴趣的数据上指定验证属性,例如不变量。否则,默认情况下它可能只会告诉您是否存在死锁。请查看“探索执行替代方案”部分。
【讨论】:
据我所知,没有商业 JVM 可以做到这一点,但我建议你看看像 ConTest 这样的工具,它们试图在你的问题领域为你提供帮助:
一般来说,因为大部分商用的JVM都是依赖操作系统来做线程调度的,所以JVM自己做的事情并不是很自然的事情。 Jikes-RVM 的绿色线程版本可能会有一些东西(可能是较旧的版本)。
【讨论】: