Что такое "системный поток" в Java? - PullRequest
4 голосов
/ 27 февраля 2020

В Eclipse Debug View есть опция «Показать системные потоки»:

enter image description here

Если эта функция включена, Eclipse отображает количество потоков, которые обычно скрыты от списка тем. Все они находятся в группе потоков system:

enter image description here

У меня вопрос, есть ли официальное понятие "системный поток" в Java Или это просто Eclipse? Я некоторое время гуглял и не нашел упоминания о "Java системном потоке", так что я думаю, что это терминология, созданная Eclipse?

Если это не так, то это Java Понятие, подобное потоку демона, как мне узнать, является ли данный поток "системным"?

Еще одна вещь, которую я не понимаю, - это если я создаю новую группу потоков Foo под root system группа потоков, а затем создайте новый поток MyThread в группе Foo

public class Test2 {

    public static void main(String[] args) {
        ThreadGroup threadGroup = new ThreadGroup(getRootThreadGroup(), "Foo");
        new Thread(threadGroup, () -> {
            System.out.println("hello");
        }, "MyThread").start();
    }

    // This will return the root "system" thread group
    public static ThreadGroup getRootThreadGroup () {
        ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
        while (currentGroup != null) {
            ThreadGroup parent = currentGroup.getParent();
            if (parent == null) {
                return currentGroup;
            }
            else {
                currentGroup = parent;
            }
        }

        return null;
    }
}

, тогда Eclipse покажет, что MyThread является системным потоком:

enter image description here

Так что в этом случае Eclipse ошибочно принимает мой поток за «системный поток», или это реальный способ создания «системного потока», что бы это ни было?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...