Skip to content

Instantly share code, notes, and snippets.

@ZhdanRuslan
Created February 9, 2016 06:34
Show Gist options
  • Save ZhdanRuslan/ee621f47853d546b7d30 to your computer and use it in GitHub Desktop.
Save ZhdanRuslan/ee621f47853d546b7d30 to your computer and use it in GitHub Desktop.
Level 25, Lesson 05, Home 01
package com.javarush.test.level25.lesson05.home01;
/**
* Created by Ruslan Zhdan on 08.02.2016.
*/
public class LoggingStateThread extends Thread
{
private Thread target;
public LoggingStateThread(Thread target)
{
setDaemon(true);
this.target = target;
}
@Override
public void run()
{
State state = target.getState();
System.out.println(state);
while(state != State.TERMINATED)
{
if (state != target.getState())
{
state = target.getState();
System.out.println(state);
}
}
}
}
package com.javarush.test.level25.lesson05.home01;
/* Мониторинг состояния нити
В отдельном классе создать нить LoggingStateThread,
которая будет выводить в консоль все состояния (State) переданной в конструктор нити.
Нить LoggingStateThread должна сама завершаться после остановки переданной в конструктор нити.
Метод main не участвует в тестировании.
*/
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.interrupted(); //TERMINATED
Thread.sleep(500);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment