public class TaskManipulator implements Runnable, CustomThreadManipulator {
private Thread t;
@Override
public void run() {
try{
while(true){
System.out.println(t.getName());
Thread.sleep(100);
}
}
catch (InterruptedException ie){}
}
/**/
@Override
public void start(String threadName) {
t = new Thread(this, threadName);
t.start();
}
@Override
public void stop() {
t.interrupt();
}
}
first
first
second
second
second
third
fifth
fifthYakobs Zingelgofer
41 уровень
Задачу решил, но .. у меня ступор какой-то, почему "fifth" печатается 2 раза!?
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ольга
2 января 2019, 13:39
Видимо, это происходит из-за того, что нить "forth" запускается и сразу же останавливается. И при запуске метода run для нити "forth" ее уже по сути нет, она прервалась, и создалась новая нить "fifth". Поэтому первый вывод "fifth" - это работа метода run для нити "forth", а второй - уже свой собственный run.
Если вставить в main после manipulator.start("forth") строчку
Thread.sleep(1);
то все видно становится.
По-моему, так))
0