Так как мы уже научились работать с потоками, сейчас нам необходимо создать несколько потоков (3-4 потока), которые каждые 2-3 секунды отправляют в консоль некоторое сообщение, обязательно содержащее имя потока, которое было задано при создании. Поток должен выполнять бесконечный цикл вывода сообщения и сна (задержки). Главный поток программы (метод main) должен дать поработать остальным потокам какое-то время (секунд 15), а потом одним методом завершить все созданные ранее потоки.
- Создание 4 потоков, каждый из которых имеет свое имя.
- Каждые 2-3 секунды поток печатает сообщение в консоль. Обязательно в сообщении должно фигурировать имя потока
- Через какое-то время (например 15 секунд), главный поток должен одним методом завершить все созданные ранее потоки
Пример 1
Создаю потоки...
Я поток 1. Всем привет!
Я поток 2. Всем привет!
Я поток 4. Всем привет!
Я поток 3. Всем привет!
Я поток 2. Всем привет!
Я поток 1. Всем привет!
Я поток 3. Всем привет!
Я поток 4. Всем привет!
Я поток 4. Всем привет!
Я поток 3. Всем привет!
Я поток 2. Всем привет!
Я поток 1. Всем привет!
Завершаю все потоки.
- Напишите свой собственный класс-поток
MyThreadили иное название, который переопределит метод run таким образом, чтобы раз в несколько секунд печатать сообщение в консоль.
class MyThread extends Thread {
@Override
public void run() {
try {
while(!isInterrupted()) {
Thread.sleep(2500);
System.out.println("Всем привет!");
}
} catch (InterruptedException err) {
} finally{
System.out.printf("%s завершен\n", getName());
}
}
}- Допишите в вывод сообщения имя потока. Оно не должно быть "хардкоженным", нужно использовать методы класса
Thread - Создайте 4 экземпляра созданного класса и запустите их.
- Усыпите поток на некоторое время (15 секунд)
- Завершите все ранее созданные потоки, вызвав один метод. Обратитесь к лекции, если испытываете затруднения с реализацией.
Подсказка
Используйте метод Thread.getCurrentThread.getName() для получения имени текущего потока. Используйте Thread для создания потоков, не используйте пулы. Используйте ThreadGroup для группировки процессов и управления ими как одним