Исправьте условие, что класс должен быть в отдельном файле тогда
иначе бред
после создания в отдельном файле - все ок
(![]()

package com.javarush.task.task25.task2506;
/*
Мониторинг состояния нити
Cоздай класс нити LoggingStateThread, которая будет выводить в консоль все состояния (State) переданной в конструктор нити.
Нить LoggingStateThread должна сама завершаться после остановки переданной в конструктор нити.
Метод main не участвует в тестировании.
Требования:
1. Создай класс LoggingStateThread. Он должен наследовать класс Thread.
2. Класс LoggingStateThread должен содержать поле нити, за которой он будет следить. Это поле должно инициализироваться через конструктор.
3. Переопредели метод run в классе LoggingStateThread.
4. После запуска класс LoggingStateThread должен выводить в консоль изменения состояния переданной нити.
5. После завершения работы наблюдаемой нити, LoggingStateThread так же должен завершить работу.
*/
public class Solution {
public static void main(String[] args) throws InterruptedException {
Thread target = new Thread();
LoggingStateThread loggingStateThread = new LoggingStateThread(target);
loggingStateThread.start();
target.start(); //NEW
Thread.sleep(100); //RUNNABLE
target.join(100);
Thread.sleep(400);
target.interrupt(); //TERMINATED
Thread.sleep(500);
}
public static class LoggingStateThread extends Thread {
private Thread thread;
public LoggingStateThread(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
State state = null;
while (true) {
State stateNew = thread.getState();
if (stateNew != state) {
state = stateNew;
System.out.println(state);
}
if (state == State.TERMINATED)
break;
}
}
}
}