gpt4 book ai didi

java - 在 Linux 上调整 Java 中的上下文切换频率

转载 作者:IT王子 更新时间:2023-10-29 00:38:50 26 4
gpt4 key购买 nike

我正在调查某些二进制 Java 代码中的潜在并发问题。代码有时会出现奇怪的行为,但我不确定这实际上是由于代码本身的并发问题,还是其他原因。我自己无法重现这种奇怪的行为,但只在我们的日志文件中看到它发生了。

有没有办法提高 JVM 的上下文切换频率,从而以更高的概率发现潜在的并发问题?最好不要在代码中显式插入对 Thread::yeild 或 Thread::sleep 的调用。

最佳答案

我认为 Thread-weaver测试框架可以帮助你。自从我尝试使用它以来已经有一段时间了,但它确实允许您强制执行特定的调度。它也可以在一种默认模式下运行,在这种模式下测试两种方法之间的大量交错。

这是一个简单的示例测试(使用默认交织)

public class MyListTest {
private MyList<String> list;

@Test
public void testThreading() {
AnnotatedTestRunner runner = new AnnotatedTestRunner();
// Run all Weaver tests in this class, using MyList as the Class Under Test.
runner.runTests(this.getClass(), MyList.class);
}

@ThreadedBefore
public void before() {
list = new MyList<>();
}

@ThreadedMain
public void mainThread() {
list.putIfAbsent("A");
}

@ThreadedSecondary
public void secondThread() {
list.putIfAbsent("A");
}

@ThreadedAfter
public void after() {
assertThat(list).hasSize(1);
}
}

关于java - 在 Linux 上调整 Java 中的上下文切换频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118383/

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