Даже не знаю что спросить...
- Для начала что от меня вообще требовалось?
- Где об этом можно почитать?
- Почему приняло?
- Почему вывод у меня каждый раз разный?
И "вопрос на миллион" - как воспользоваться обещанной в подписке возможностью повторно решать задачи?
Условие:
Не валять дурака
Восстанови логику класса TaskManipulator.
Требования:
1. Класс TaskManipulator должен реализовывать интерфейсы Runnable и CustomThreadManipulator.
2. Метод run должен каждые 100 миллисекунд выводить имя исполняемой нити в консоль.
3. Класс TaskManipulator должен иметь внутреннее поле типа Thread.
4. Метод start должен создавать, сохранять во внутреннее поле и запускать нить с именем, которое передано через аргумент метода.
5. Метод stop должен прерывать последнюю созданную классом TaskManipulator нить.
CustomThreadManipulator:
package com.javarush.task.task25.task2508;
public interface CustomThreadManipulator {
public void start(String threadName);
public void stop();
}
TaskManipulator:
package com.javarush.task.task25.task2508;
public class TaskManipulator implements Runnable, CustomThreadManipulator {
private Thread currentThread;
@Override
public void run() {
while(!currentThread.isInterrupted()){
try {
System.out.println(currentThread.getName());
Thread.sleep(100);
} catch(InterruptedException e){
currentThread.interrupt();
}
}
}
@Override
public void start(String threadName) {
currentThread = new Thread(this, threadName);
currentThread.start();
}
@Override
public void stop() {
currentThread.interrupt();
}
}
Solution:
package com.javarush.task.task25.task2508;
/*
Не валять дурака
*/
public class Solution
{
/*
Output:
first
first
second
second
second
third
fifth
*/
public static void main(String[] args) throws InterruptedException {
CustomThreadManipulator manipulator = new TaskManipulator();
manipulator.start("first");
Thread.sleep(150);
manipulator.stop();
manipulator.start("second");
Thread.sleep(250);
manipulator.stop();
manipulator.start("third");
Thread.sleep(50);
manipulator.stop();
manipulator.start("forth");
manipulator.stop();
manipulator.start("fifth");
Thread.sleep(1);
manipulator.stop();
}
}
Вывод рандомный - от бесконечного цикла до нескольких строк, вот самое близкое к цели:
first
first
third
fifth
fifth