Просыпается ли виртуальный поток в том же потоке носителя, в котором он был заблокирован?

Правильно ли я понимаю, что виртуальный поток работает в одном и том же потоке-носителе на протяжении всей своей жизни? Если нет, то мне интересно, нужно ли нам иметь переменные экземпляра какчтобы иметь правильное значение после того, как виртуальные потоки блокируются в одном потоке носителя и просыпаются в другом. Например, см. фрагмент кода ниже:

      public class VirtualThreadDemo {

    private int disabledUserCount;

    void countDisabledUsers() {

        while (moreUsers()) {
            User user = getNextUserFromDb(); // virtual thread blocks for IO
            if (user.isDisabled())
                disabledUserCount++; // always happens in same carrier thread?
        }
        System.out.println(disabledUserCount);
    }
}

Нам не нужно декларироватькак изменчивый (поскольку поток носителя гарантированно останется прежним). Правильный?

Если нет, то что, если это локальная переменная?

0 ответов

Другие вопросы по тегам