Ver Mensaje Individual
  #1  
Antiguo 12-09-2007
AngelV AngelV is offline
Miembro
 
Registrado: abr 2007
Posts: 49
Reputación: 0
AngelV Va por buen camino
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
Responder Con Cita