В условии для while четко прописано
while (!thread.isInterrupted())
Однако бесконечный цикл продолжает работать после вызова у нити метода interrupt.
package com.javarush.task.task25.task2506;
public class LoggingStateThread extends Thread {
private Thread thread;
public LoggingStateThread(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
String state = thread.getState().toString();
System.out.println(state);
while (!thread.isInterrupted()){
if(!state.equals(thread.getState().toString())){
System.out.println(thread.getState().toString());
}
}
}
}
package com.javarush.task.task25.task2506;
/*
Мониторинг состояния нити
*/
public class Solution {
public static void main(String[] args) throws InterruptedException {
Thread target = new Thread();
LoggingStateThread loggingStateThread = new LoggingStateThread(target);
loggingStateThread.start(); //NEW
Thread.sleep(100);
target.start(); //RUNNABLE
Thread.sleep(100);
//TERMINATED
target.interrupt();
}
}