Saiyine
Punto Com

Arrancando correctamente los hilos en Java

2008-01-06 02:47:12

En relación a la entrada "Ejecutar en segundo plano usando hilos (threads)", me gustaria comentar que un error muy común, que ha sido perpetuado por algún libro de texto, es creer que los métodos run y start de los hilos son equivalentes. Nada más lejos de la realidad, como os muestro con este ejemplo.

public class ThreadsEjemplo2 extends Thread
{
    
    public ThreadsEjemplo2(String str)
    {
        super(str);
    }
    
    public void run()
    {
        for (int i = 0; i < 10 ; i++)
        {
            try
            {
                Thread.sleep(Math.round(Math.random()*200));
            } catch (Exception E)
            {
               
            }
                System.out.println(getName());
        }
            System.out.println("Fin " + getName());
    }
    
    public static void main (String [] args)
    {
        new ThreadsEjemplo2("A").run();
        System.out.println("Y ahora los demás");
        new ThreadsEjemplo2("B").start();
        new ThreadsEjemplo2("C").start();
        new ThreadsEjemplo2("D").start();
    }
}

La salida de esta clase nos muestra claramente que primero se ejecuta el primer "hilo", que no es tal, sino una ejecución lineal normal y corriente debido a la llamada incorrecta a al método run en vez de al start, y luego si se lanzan los otros tres como debe ser.

A
A
A
A
A
A
A
A
A
A
Fin A
Y ahora los demás
B
D
B
C
D
B
C
C
D
B
B
C
D
B
C
B
C
D
B
C
B
D
B
Fin B
D
C
D
C
D
D
Fin D
C
Fin C

Aaah, está bien, lo admito: me pasó a mi el otro dí­a y lo he escrito más como autorecordatorio que otra cosa.

Rollos antiguos

2008-01-05 11:51:33 - Conociendo el mundo: hoy, Albacete.

2007-12-28 07:27:40 - Soy minero.

2007-12-24 10:06:55 - Maldita navidad.

2007-12-23 04:35:03 - Calcular la letra del DNI.

2007-12-22 06:22:08 - Writing text into a file in Java.

Saiyine

Selfie of meHi! Welcome to Saiyine Punto Com where I talk about anything that goes through my mind!

Puedo prometer y prometo que a la mayor brevedad aquí irá un menú o algo asín.