1

我正在尝试对包含 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 也是相同的?

4

2 回答 2

11

您应该在线程上调用 start 方法,而不是 run 方法。如果您调用 run,您将在同一个线程中运行它。

于 2013-07-25T14:08:52.407 回答
1

尝试改变

}.run();

}.start();
于 2013-07-25T14:09:25.827 回答