Используем потоки в Java

Любой программист знает, как важны потоки в программе. В Java задача построения многопоточной программы намного упрощена.
Напишем программу в которой будет запущено три потока, каждый будет приостановлен на случайное время, после чего будет сделан вывод об окончании работы.

Создадим новый проект, главный класс и ещё один, который будет выполнятся в потоке (thread). Я назвал главный — main, а второй — thr.
Приступим к созданию thr.java:
Подключим генератор случайных чисел.

import java.util.Random;

Сделаем класс «запускаемым» (он будет при создании автоматически выполнять метод run() ):

public class thr implements Runnable {
}

Создадим внутри класса строковую переменную для имени потока, численную для времени его остановки и экземпляр класса Random:

    String name;
    int time;
    Random r = new Random();

После этого оформим конструктор класса:

    public thr(String s) {
        name = s;   // через параметр s передаём имя потока
        time = r.nextInt(999);   ///генерируем число от 0 до 999
    }

Теперь формируем метод run(), который будет выполнен сразуже при создании объекта:

    public void run() {
        try {   //пробуем выполнить, тк выполняется автоматически и возможны сбои
            System.out.printf("%s is sleeping for %d\n",name,time);   ///выводим сообщение с именем потока и временем его простоя
            Thread.sleep(time);  //остонавливаем его на заданное время
            System.out.printf("%s is done\n",name);  //после продолжения работы выводим сообщение об окончании 
        } catch(Exception e){}  //исключения не рассматриваем
    }

Теперь в классе main создадим 3 потока с разным временем и посмотрим, что получится.
Создаём метод main:

public static void main(String[] args) {
}

Внутри него объявляем 3 потока (создаём 3 экземпляра thr в трёх потоках):

        Thread t1 = new Thread(new thr("one"));
        Thread t2 = new Thread(new thr("two"));
        Thread t3 = new Thread(new thr("three"));
        Thread t1 = new Thread(new thr("one"));
        Thread t2 = new Thread(new thr("two"));
        Thread t3 = new Thread(new thr("three"));

Компилируем и смотрим, что получилось:

one is sleeping for 504
two is sleeping for 478
three is sleeping for 437
three is done
two is done
one is done

Как видите 3 потока были созданы и «проработали» различное время, в следствии чего были остановлены в различном порядке.
Скачать готовый проект.
Спасибо за внимание.

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий