记录个问题,有时间再去解决
关于面试题 “两个线程交替打印奇偶数”:
如果使用 main方法调用,可以正确打印。
如果使用单元测试,打印出来的数字不确定。
public class Mytest {
private Integer count = 0;
private final Object lock = new Object();
public static void main(String[] args) throws InterruptedException {
Mytest mytest = new Mytest();
mytest.printing();
}
@Test
public void printing() {
Thread even = new Thread(() -> {
while (count <= 100) {
synchronized (lock) {
System.out.println(count);
count++;
lock.notifyAll();
if (count <= 100) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
Thread odd = new Thread(() -> {
while (count <= 100) {
synchronized (lock) {
System.out.println(count);
count++;
lock.notifyAll();
if (count <= 100) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
even.start();
odd.start();
}
}
目测这个应该是和junit的实现有关,先记录下问题,有时间再研究。