public class Solution implements Message, Runnable {
public static boolean ready = true;
public static List<Thread> threads = new ArrayList<>(5);
static {
for ( int i = 0; i < 5; i++){ // создаём 5 потоков
threads.add(new Thread());
}
}
public static void main(String[] args) throws IOException {
Solution solution = new Solution();
int sum = 0;
Integer number;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
threads.get(2).start(); // 3 поток, пишет каждые 0,5сек "Ура".
while (ready) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
threads.get(1).start(); // 2 поток, при ошибке пишет в косоль.
System.out.println("InterruptedException");
}
System.out.println("Ура");
}
threads.get(4).start(); // 5 поток, считываем с клавиатуры числа, считаем при "N" выводим сумму.
String n;
try {
n = reader.readLine();
while (!n.contains("N")) {
number = Integer.valueOf(n);
sum = number + sum;
n = reader.readLine();
}
System.out.println(sum);
} catch (IOException e) {
e.printStackTrace();
}
threads.get(3).start(); // 4 поток, вызывет метод, в нём выключается поток.
solution.showWarning();
}
public void run() {
threads.get(0).start(); // 1 поток, бесконечный цикл.
while (ready) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void showWarning() {
threads.get(3).interrupt();
}
}
Nicha
26 уровень
Не проходит по всем пунктам, но по отдельности вроде работает. Подскажите пж, что можно сделать?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей
23 сентября 2020, 15:59
public static void main(String[] args) {
List<Thread> threads = new ArrayList<>();
threads.add(new Thread(() -> {
while (true) {
}
}));
threads.add(new Thread(() -> {
try {
Thread.sleep(500);
}catch (InterruptedException e){
System.out.println("InterruptedException");
}
}));
threads.add(new Thread(() -> {
try {
Thread.sleep(500);
System.out.println("Ура");
}catch (InterruptedException e){
}
}));
threads.forEach(Thread::start);
}
4 нить по аналогии добавить
0
hidden #2322530
23 сентября 2020, 15:43полезный
зачем ты это все в методе main сделал?
надо создать 5 классов, и в каждом реализовать свой функционал.
1. Создай 5 различных своих нитей c отличным от Thread типом:
+1