Зарегистрируйтесь для доступа к 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) {

        // Создаём поток
        // Допустим, поток выполняет какие-то сложные вычисления
        MyThread thread = new MyThread();
        // Запускаем поток
        thread.start();

        // Прежде, чем выводить результаты вычислений
        // нужно дождаться окончания выполнения потока thread
        // Метод join() приостановит выполнение потока main до тех пор,
        // пока поток thread не завершит работу

        try {
            thread.join();
        } catch (InterruptedException e) {
            System.out.println("Поток был прерван");
        }

        // После окончания работы потока выводим результат вычислений
        // Допустим, для получения результатов вычисления в классе MyThread
        // мы определили метод getResults()
        System.out.println(thread.getResults())
    }
}

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

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

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

Об обучении на Хекслете

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

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

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

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

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

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

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

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

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

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

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

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

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