РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
994 of 1163 menu

Класс Thread

Класс Thread представляет собой поток выполнения программы. Каждая программа на Java запускается в главном потоке, который создается автоматически виртуальной машиной. С помощью класса Thread можно создавать дополнительные потоки, которые будут выполняться параллельно с главным потоком. Для создания потока нужно либо унаследоваться от класса Thread и переопределить метод run, либо передать объект Runnable в конструктор. Запуск потока выполняется методом start, а не прямым вызовом run.

В конструктор класса Thread можно передать объект Runnable, который содержит код для выполнения в потоке. Также можно передать имя потока в качестве второго параметра. Класс Thread реализует интерфейс Runnable, поэтому его можно использовать везде, где ожидается Runnable.

Синтаксис

// Способ 1: наследование от Thread class MyThread extends Thread { public void run() { // код потока } } // Способ 2: передача Runnable Thread thread = new Thread(new Runnable() { public void run() { // код потока } }); // Способ 3: лямбда-выражение Thread thread = new Thread(() -> { // код потока }); // Запуск потока thread.start();

Пример

Давайте создадим поток через наследование от класса Thread и запустим его:

public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); System.out.println("Main thread"); } } class MyThread extends Thread { public void run() { System.out.println("Child thread"); } }

Результат выполнения кода:

"Main thread" "Child thread"

Порядок вывода может меняться, так как потоки выполняются параллельно.

Пример

Давайте создадим поток через передачу объекта Runnable в конструктор:

public class Main { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { public void run() { System.out.println("Runnable thread"); } }); thread.start(); } }

Результат выполнения кода:

"Runnable thread"

Пример

Давайте создадим поток с помощью лямбда-выражения и зададим ему имя:

public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> { System.out.println(Thread.currentThread().getName()); }, "MyThread"); thread.start(); } }

Результат выполнения кода:

"MyThread"

Пример

Давайте дождемся завершения потока с помощью метода join:

public class Main { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { System.out.println("Child thread"); }); thread.start(); thread.join(); System.out.println("Main thread"); } }

Результат выполнения кода:

"Child thread" "Main thread"

Смотрите также

  • метод start,
    который запускает поток на выполнение
  • метод join,
    который ожидает завершения потока
  • метод sleep,
    который приостанавливает поток
  • интерфейс Runnable,
    который содержит код для выполнения в потоке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить