为什么这是我尝试产生无休止的Threads停在4?

Kor*_*gay 8 java multithreading java-8

我在Java 8中有这个简单的代码:

class ThreadTest {
    void threadTest() {
        new Thread(this::threadTest).start();
        System.out.println(Thread.activeCount());
    }

    public static void main(String[] args) {
        new ThreadTest().threadTest();
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我非常期待看到非常大的数字被打印出来.我在控制台中看到的只有:

4
4
4
4
4
4
4
4
4
Run Code Online (Sandbox Code Playgroud)

我说也许我无法出于任何原因看到其他人,并修改了如下代码:

class ThreadTest {
    void threadTest() {
        new Thread(this::threadTest).start();
        if (Thread.activeCount() > 4) {
            System.out.println(Thread.activeCount());
        }
    }

    public static void main(String[] args) {
        new ThreadTest().threadTest();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在什么都没打印出来了.

我在这里错过了什么?

Joe*_*e C 5

一旦你的线程到达它的执行结束(在你的情况下,threadTest()方法的结尾),它就不再是一个活动的线程.

如果Thread.sleep在方法中添加过长的时间,您将看到此活动线程数进一步增加.