
12-09-2007
|
Miembro
|
|
Registrado: abr 2007
Posts: 49
Poder: 0
|
|
Orden de secuencia incorrecto
Hola!
Como puse en otro mensaje ando liado con Programación Concurrente. Procuré ayudarme del libro Piensa en Java de Bruce Eckel.
En el Capítulo 14 de la Segunda Edición, se tratan los Hilos múltiples, pues bien, estoy probando los ejemplos sencillitos, para ver que se intercalan hilos, y no es todo secuencial.
Os pongo el código del pequeño ejemplo:
Código:
public class SimpleThread extends Thread
{
private int countDown = 5;
private static int threadCount = 0;
private int threadNumber = ++threadCount;
public SimpleThread()
{
System.out.println("Making " + threadNumber);
}
public void run()
{
while(true)
{
System.out.println("Thread " + threadNumber + "(" + countDown + ")");
if(--countDown == 0)
return;
}
}
public static void main(String[] args)
{
for(int i = 0; i < 5; i++)
new SimpleThread().start();
System.out.println("All Threads Started");
}
}
Es de lo más sencillo que hay, y no trata con semáforos, ni monitores ni nada, simplemente hilos, y ver que se intercalan. Pues bueno, tanto con Eclipse, como desde consola:
Código:
javac SimpleThread.java
java SimpleThread
el resultado que me da siempre es el mismo:
Código:
Making 1
Making 2
Thread 1(5)
Thread 1(4)
Thread 1(3)
Thread 1(2)
Thread 1(1)
Making 3
Thread 2(5)
Thread 2(4)
Thread 2(3)
Thread 2(2)
Thread 2(1)
Making 4
Thread 3(5)
Thread 3(4)
Thread 3(3)
Thread 3(2)
Thread 3(1)
Making 5
Thread 4(5)
Thread 4(4)
Thread 4(3)
Thread 4(2)
Thread 4(1)
All Threads Started
Thread 5(5)
Thread 5(4)
Thread 5(3)
Thread 5(2)
Thread 5(1)
Hay algo aquí que está fallando, y no se qué puede ser. Espero que alguien haya podido tener el mismo fallo que yo anteriormente, y me pueda aconsejar.
// Saludos
Todo esto lo estoy haciendo en Kubuntu 7.04 Feisty Fawn con el JRE 6 instalado.
Última edición por AngelV fecha: 12-09-2007 a las 21:24:19.
Razón: Indicar el Sistema Operativo y el JRE
|