Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2007
AngelV AngelV is offline
Miembro
 
Registrado: abr 2007
Posts: 49
Poder: 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
  #2  
Antiguo 12-09-2007
Avatar de Arcioneo
Arcioneo Arcioneo is offline
Miembro
 
Registrado: jul 2006
Ubicación: Tierra
Posts: 583
Poder: 18
Arcioneo Va por buen camino
Cool Te parece secuencial

Te parece secuencial porque el ciclo es tan corto que el procesador no tiene que realizar interrupciones entre hilos, aumenta los ciclos de tus contadores a numero mucho mayor y verás como los empieza a intercalar
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
Responder Con Cita
  #3  
Antiguo 13-09-2007
AngelV AngelV is offline
Miembro
 
Registrado: abr 2007
Posts: 49
Poder: 0
AngelV Va por buen camino
Cita:
Empezado por Arcioneo Ver Mensaje
Te parece secuencial porque el ciclo es tan corto que el procesador no tiene que realizar interrupciones entre hilos, aumenta los ciclos de tus contadores a numero mucho mayor y verás como los empieza a intercalar
Resulta que llevaba usted razón, señor. Toda la tarde angustiado pensando si habrían modificado la forma de funcionar de los últimos JRE, a ver si tenía desconfigurado Java, a ver si habían modificado los hilos desde la versión de Java 2 (que es la que describe el libro) hasta la 6, o si es que directamente yo soy gilipollas y todo me sale mal .

Pero si que debe ser pequeño el ciclo, después le puse 50 para probar, y también me salía secuencial.Me mosqueé y puse 500, ya empezó, aunque poco a intercalar. Con 5.000 seguía intercalando poco, pero ya con 50.000 fue otro cantar. Ahora lo tengo trabajando que puse directamente 5,000.000 de decrementos por hilo, y parece que está tardando

Muchas gracias por todo, Arcioneo.
Responder Con Cita
  #4  
Antiguo 13-09-2007
Avatar de Arcioneo
Arcioneo Arcioneo is offline
Miembro
 
Registrado: jul 2006
Ubicación: Tierra
Posts: 583
Poder: 18
Arcioneo Va por buen camino
Angry No es nada tio

Cita:
Empezado por AngelV Ver Mensaje
Resulta que llevaba usted razón, señor. Toda la tarde angustiado pensando si habrían modificado la forma de funcionar de los últimos JRE, a ver si tenía desconfigurado Java, a ver si habían modificado los hilos desde la versión de Java 2 (que es la que describe el libro) hasta la 6, o si es que directamente yo soy gilipollas y todo me sale mal .

Pero si que debe ser pequeño el ciclo, después le puse 50 para probar, y también me salía secuencial.Me mosqueé y puse 500, ya empezó, aunque poco a intercalar. Con 5.000 seguía intercalando poco, pero ya con 50.000 fue otro cantar. Ahora lo tengo trabajando que puse directamente 5,000.000 de decrementos por hilo, y parece que está tardando

Muchas gracias por todo, Arcioneo.

Pero en tu vida vuelvas a decirme SEÑOR
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
Responder Con Cita
  #5  
Antiguo 13-09-2007
AngelV AngelV is offline
Miembro
 
Registrado: abr 2007
Posts: 49
Poder: 0
AngelV Va por buen camino
Cita:
Empezado por Arcioneo Ver Mensaje
Pero en tu vida vuelvas a decirme SEÑOR
Eso está hecho, señor
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
RecordCount incorrecto en TkbmMemTable. Da el real menos 1 Wonni OOP 1 07-06-2007 12:27:08
Campo COUNT incorrecto? Duc SQL 6 07-07-2005 17:39:28
Error: Parámetro Incorrecto Manuel Varios 2 30-04-2004 01:19:30
Filtro Incorrecto JamesBond_Mx Conexión con bases de datos 2 06-04-2004 22:31:23
Indice incorrecto VolaRe Varios 8 22-02-2004 20:34:45


La franja horaria es GMT +2. Ahora son las 01:16:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi