Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Многопоточность в Java Java: Продвинутое использование

Чтобы создать поток, нужно создать класс и унаследовать его от класса Thread

public class ThreadExample extends Thread {

    // В классе нужно переопределить метод run()
    // В методе содержится логика, которую поток будет выполнять
    @Override
    public void run() {
        // Метод getName() выводит имя потока
        System.out.println("Thread " + getName());
    }
}
public class Example {

    public static void main(String[] args) {

        // Создадим 5 потоков в цикле
        for (int i = 0; i < 5; i++) {

            // Создаём экземпляр потока
            ThreadExample thread = new ThreadExample();
            // Запускаем поток при помощи метода start()
            // После этого начинает выполняться метод run() потока
            thread.start();
        }
    }
}

Вывод

// => Thread Thread-2
// => Thread Thread-1
// => Thread Thread-0
// => Thread Thread-3
// => Thread Thread-4

Метод thread.join()

Метод thread.join() останавливает выполнение текущего потока до тех пор, пока указанный поток не прекратит работу (или не будет прерван)

public class Example1 {

    public static void main(String[] args) {

        // Создается новый поток JoinThread
        Thread thread = new JoinThread();

        // Запускается поток
        thread.start();

        // Основной поток приостанавливается на 1000 миллисекунд
        try {
            Thread.sleep(1: 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Breakpoint 1");

        // Основной поток ожидает завершения потока thread
        // Выполнение основного потока приостанавливается до тех пор, пока thread не выполнится полностью
        try {
            thread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Breakpoint 2");
    }
}

Порядок выполнения будет следующим:

  • Запускается поток thread
  • Основной поток приостанавливается на 1 секунду
  • Затем ждет завершения выполнения thread
  • После завершения выполнения thread продолжается выполнение основного потока, выводя "Breakpoint 2".

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу