我正在尝试编写一个需要多个线程的单元测试。但是,似乎线程在执行到一半就停止了。请看以下代码:
public class Test {
@org.junit.Test
public void TestThreads() {
new Thread(new Runnable() {
public void run() {
for (int i = 1; i < 1000; i++) System.out.println(i);
}
}).start();
}
}
如果我运行这个单元测试,它通常会在 140-180 的某个地方停止显示输出。如果我将此代码转换为常规类并运行它,则可以正常工作。有人知道我在这里缺失了什么吗?谢谢, - 安德鲁。
run
就像在类中调用一个普通方法。使用start
会告诉 JVM:“嘿!有一个新的真实线程想要独立于主应用程序线程运行”。FindBugs将其标记为“可能”的错误是因为在 Thread 上调用run
应该是一个错误(在我看来它是一个错误),它应该从 JVM 被调用,而不是从程序员那里。 - Luiggi Mendoza