Есть ли у Java Program Process больше потоков на уровне ОС, чем на уровне JVM?JAVA

Программисты JAVA общаются здесь
Anonymous
Есть ли у Java Program Process больше потоков на уровне ОС, чем на уровне JVM?

Сообщение Anonymous »

У меня есть эта простая программа Java, которая запускает 10 потоков, которые просто спят.import java.util.stream.IntStream;

public class Main {

static void sleep() {
try {
Thread.sleep(100_000);
} catch (InterruptedException e) {
System.exit(1);
}
}

public static void main(String... args) {
IntStream.range(0, 10)
.mapToObj($ -> new Thread(Main::sleep))
.forEach(Thread::start);
}
}
< /code>
Я написал этот скрипт, чтобы проверить, сколько потоков существует на уровне JVM и сколько существует на уровне ОС < /p>
#!/usr/bin/env bash

JPID=$(jps -l | grep Main | awk '{print $1}')
JAVA_THREADS_COUNT=$(jstack ${JPID} | grep -E "^\"" | wc -l)
OS_THREADS_COUNT=$(ps -o nlwp= -p $JPID)

echo "Java threads count: ${JAVA_THREADS_COUNT}"
echo "OS threads count: ${OS_THREADS_COUNT}"
< /code>
Вывод скрипта всегда показывает, что количество потоков ОС имеет на 1 больше, чем количество потоков Java. Если это ожидается, то почему это так?


Подробнее здесь: https://stackoverflow.com/questions/796 ... -jvm-level

Вернуться в «JAVA»