package ar.com.javacuriosities.threads; public class Lesson03CommonMethods { public static void main(String[] args) { // Creamos un thread sobre el cual vamos a trabajar Thread worker = new Worker(); /* * Por medio del método setName() podemos asignarle el nombre que nosotros * queramos sino por defecto su nombre es "Thread-X" donde X es el contador autoincremental. * Podemos cambiar su nombre tantas veces como queramos */ worker.setName("Worker 01"); /* * La prioridad de los thread esta definida entre un rango de numero desde 1 a 10, estos * valores están definidos en constantes en la clase Thread * * public final static int MIN_PRIORITY = 1; * public final static int NORM_PRIORITY = 5; * public final static int MAX_PRIORITY = 10; * * La realidad es que el thread pasa estos valores al sistema operativo y hace la conversion * a las prioridades que maneja el SO. * * Los thread inician con la misma prioridad que tiene su el hilo que los creo a ese momento */ worker.setPriority(Thread.MAX_PRIORITY); /* * Un thread puede ser marcado como thread demonio, por defecto esta propiedad es "false" * y se los llama User-Thread o sea hilos de usuarios. * * La JVM va a continuar viva hasta que todos los hilos de usuarios hayan terminado, luego * se cierra el proceso y los Daemon-Thread son terminados por la JVM */ worker.setDaemon(false); /* * Dado que los thread pueden ejecutar cualquier código Java también son sensibles a exceptions * por eso si un thread termina por una exception que no fue tratada se invoca a un handler * por default, este atributo es falso a no ser que asignemos algún objeto para funcionar de handler */ worker.setUncaughtExceptionHandler(null); // Iniciamos el thread worker.start(); } private static class Worker extends Thread { @Override public void run() { System.out.println("Going from home to work"); System.out.println("Walking"); for (int i = 0; i < 100; i++) { System.out.print("."); } System.out.println(); System.out.println("I have just arrived at work"); } } }