package com.javarush.test.level16.lesson13.home02;
/* Последовательные выполнения нитей
1. В методе run после всех действий поставь задержку в 10 миллисекунд. Выведи "Нить прервана", если нить будет прервана.
2. Сделай так, чтобы все нити выполнялись последовательно: сначала для нити №1 отсчет с COUNT до 1, потом для нити №2 с COUNT до 1 и т.д.
Пример:
#1: 4
#1: 3
...
#1: 1
#2: 4
...
*/
public class Solution {
public volatile static int COUNT = 4;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < COUNT; i++) {
SleepingThread thread = new SleepingThread();
//напишите тут ваш код
thread.join();
}
}
public static class SleepingThread extends Thread {
private volatile int countDownIndex = COUNT;
private static volatile int threadCount = 0;
public SleepingThread() {
super(String.valueOf(++threadCount));
start();
}
public void run() {
while (true) {
System.out.println(this);
if (--countDownIndex == 0) return;
//add sleep here - добавь sleep тут
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
System.out.println("Нить прервана.");
}
}
}
public String toString() {
return "#" + getName() + ": " + countDownIndex;
}
}
}
Leave A Comment