package ar.com.javacuriosities.threads; public class Lesson06SleepMethod { public static void main(String[] args) { /* * Creamos dos threads lo cuales podemos indicar por medio * de un boolean en su constructor si esta cansado o no, si * esta cansado el thread se dormirá por 5000 ms o sea 5 segundos */ Thread worker01 = new Worker("Worker-01", true); Thread worker02 = new Worker("Worker-02", false); /* * Iniciamos los dos threads, dado que el energetic man empieza * primero usualmente será el que termine primero, pero si indicamos * que esta cansado ese thread se dormirá por 5 segundos y eso afecta directamente * cuando termina */ worker01.start(); worker02.start(); } private static final class Worker extends Thread { private boolean needSleep; public Worker(String name, boolean needSleep) { super(name); this.needSleep = needSleep; } @Override public void run() { System.out.println("Thread Name: " + getName()); if (needSleep) { try { Thread.sleep(5000); } catch (InterruptedException e) { /* * Puede ser que nuestro thread este dormido y alguien * ejecute el método interrupt() lo cual va a generar * esta exception la cual es chequeada para que dejemos * los datos de forma consistente */ // Log and Handle exception e.printStackTrace(); } } System.out.println(getName() + " is done"); } } }