gpt4 book ai didi

java - 线程安全单元测试

转载 作者:行者123 更新时间:2023-11-30 08:48:29 24 4
gpt4 key购买 nike

据我所知,单元测试线程安全没有“好的”通用解决方案。但我想要一个针对特定 问题的好的解决方案。

让我们考虑一下这个(虚拟的)动态列表实现。 add 方法显然不是线程安全的。由于使其成为线程安全的很明显(让我们考虑我们不会实现任何 remove 方法并将其保持为虚拟),如何对这段代码进行单元测试以显示它是 < em>实际上 不是线程安全的并表明线程安全修复确实有效(或似乎有效)?

public class ArrayList {

private int capacity = 2;
private Object[] content = new Object[capacity];
private int size;

public void add(Object object) {
if (size == capacity) {
ensureCapacity();
}
content[size++] = object;
}

public Object get(int index) {
if (index >= size) {
throw new IndexOutOfBoundsException();
}
return content[index];
}

private void ensureCapacity() {
int extendedCapacity = capacity * 2;
Object[] extended = new Object[extendedCapacity];

System.arraycopy(content, 0, extended, 0, size);

this.capacity = extendedCapacity;
this.content = extended;
}
}

最佳答案

您可以尝试一些实用程序,例如 jcstress http://openjdk.java.net/projects/code-tools/jcstress/或织线工 https://github.com/google/thread-weaver谁将检测您的字节码并为您的实现生成压力测试。

关于java - 线程安全单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31921959/

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