gpt4 book ai didi

java - 对并行 Java 程序进行单元测试

转载 作者:行者123 更新时间:2023-11-29 07:55:50 24 4
gpt4 key购买 nike

我正在尝试编写 JUnit 测试。我的问题是我的线程看不到我在顺序代码位(启动线程之前的代码)中创建的对象。

public class MyTest implements Runnable {

private MyClass mc;

/**
* @throws InterruptedException
*/
@Test
public void parallelTest() throws InterruptedException {
this.mc = new MyClass();
Thread thread1 = new Thread(new MyTest());
Thread thread2 = new Thread(new MyTest());
thread1.join();
thread2.join();
thread1.start();
thread2.start();
// TODO the test
}

public void run() {
if(mc != null) {
System.out.println("ph not null");
} else {
System.out.println("ph null"); // THIS CODE GETS EXECUTED
}
// some code
}
}

参见上面run方法中的注释。我的对象为空,但我希望两个线程都能够访问 MyClass 对象。他们怎么会看到空值?我尝试使用构造函数,但我认为接口(interface)阻止我将参数传递给构造函数。

非常感谢。

最佳答案

每个可运行的实例都是使用 new MyTest() 创建的。并且 MyTest 类没有任何构造函数来初始化字段 private MyClass mc;。所以它有它的默认值:null。

每个对象都有自己的实例字段。这是 OO 的基本原则。

关于java - 对并行 Java 程序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764371/

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