Java线程ID不会改变

时间:2013-07-25 14:07:22

标签: java concurrency

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

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:1)

尝试改变

}.run();

}.start();