我正在尝试对包含ThreadLocal的类进行单元测试,并希望通过在每个测试中启动一个新线程来使测试不会相互影响。但是,他们仍然这样做,我不明白为什么。
@Test
public void testThread() {
System.out.println(Thread.currentThread().getId());
new Thread(){
@Override
public void run(){
System.out.println(Thread.currentThread().getId());
}
}.run();
}
输出:
1
1
有人可以解释为什么即使启动新线程,ID也是相同的吗?
答案 0 :(得分:11)
您应该在线程上调用start方法,而不是run方法。如果你调用run,则在同一个线程中运行它。
答案 1 :(得分:1)
尝试改变
}.run();
与
}.start();