package com.javarush.task.task16.task1617;
/*
Отсчет на гонках
*/
public class Solution {
public static volatile int numSeconds = 5;
public static void main(String[] args) throws InterruptedException {
RacingClock clock = new RacingClock();
//add your code here - добавь код тут
}
public static class RacingClock extends Thread {
public RacingClock() {
start();
}
public void run(){
//add your code here - добавь код тут
Thread t = new Thread();
if (numSeconds < 3.5){
for(int i = numSeconds; i>=0; i--){
if(numSeconds > 0) {
System.out.print(numSeconds + " ");
numSeconds--;
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e);
}
}
else
System.out.println("Марш!");
}
}
else{
while(!(t.isInterrupted())){
if(numSeconds > 0) {
System.out.print(numSeconds + " ");
numSeconds--;
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e);
}
}
else{
System.out.print("Прервано!");
try{
Thread.sleep(1000);}
catch (Exception e){
System.out.println(e);
}
t.interrupt();
}
}
}
}
}}
Vladimir Saltykov
22 уровень
почему while не прерывается после t.interrupt?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Данила Соколов
11 мая 2019, 17:30
В цикле while(!(t.isInterrupted())) лишние скобочки
И желательно у clock вызвать interrupt )
0
RiccioMaster
9 мая 2019, 22:00полезный
Если я правильно понимаю, ты вы пытаетесь заглушить не тот поток.
Надо не t.interrupt() и while(!(t.isInterrupted())){, а this.interrupt() и while (!(this.isInterrupted())) {- у вас работает поток экземпляра RacingClock clock = new RacingClock(), а не Thread t = new Thread().
+1
Артем Divertitto Senior Android-разработчи в United Tech Master
14 мая 2019, 07:13решение
к тому же у тебя t не запускался, следовательно нечего останавливать
+2