Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Thread.currentThread()

Возвращает поток, который выполняет текущий код.

Доступно с: Java 1.0

Синтаксис

public static Thread currentThread()

Возвращаемое значение

ThreadОбъект Thread текущего потока.

Примеры

Имя и вид главного потока:

void main() {
    Thread t = Thread.currentThread();
    IO.println(t.getName());
    IO.println(t.isVirtual());
}

Результат:

main
false

Внутри задачи метод возвращает поток, в котором она выполняется:

void main() throws InterruptedException {
    Thread worker = new Thread(
        () -> IO.println("Running in " + Thread.currentThread().getName()), "worker-1");
    worker.start();
    worker.join();
 
    Thread virtual = Thread.ofVirtual().start(
        () -> IO.println("Virtual: " + Thread.currentThread().isVirtual()));
    virtual.join();
}

Результат:

Running in worker-1
Virtual: true

Примечания

Главное применение, кроме логов, — восстановить флаг прерывания: если вы поймали InterruptedException и не можете пробросить его дальше, вызовите Thread.currentThread().interrupt(). Номер потока возвращает threadId(). У виртуальных потоков имя по умолчанию пустое.

См. также

  • Thread — Поток выполнения: позволяет программе делать несколько дел одновременно.
  • Thread.ofVirtual() — Создаёт виртуальный поток — лёгкий поток, которых можно запустить миллионы.
  • InterruptedException — Проверяемое исключение: ожидающий поток попросили прерваться.
  • ScopedValue — Значение, доступное коду только на время вызова — например, текущий пользователь запроса. Замена ThreadLocal.

В учебнике

  • Потоки выполнения — Потоки в Java — класс Thread, запуск через start, ожидание через join, Thread.sleep, имена потоков и непредсказуемый порядок выполнения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.