Foros del Web » Programación para mayores de 30 ;) » Java »

Terminación Thread

Estas en el tema de Terminación Thread en el foro de Java en Foros del Web. Hola. Tengo que ejecutar un Thread, que modifica unos datos a partir de un servidor, que necesito más tarde. La cosa es que ejecuto el ...
  #1 (permalink)  
Antiguo 29/07/2009, 19:30
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 2 meses
Puntos: 0
Terminación Thread

Hola.

Tengo que ejecutar un Thread, que modifica unos datos a partir de un servidor, que necesito más tarde.

La cosa es que ejecuto el Thread, y cuando pido los datos... aún no se han modificado (el Thread va más lento por la conexión y eso).

¿Hay alguna forma de decirle a Java que se espere a que termine el Thread para poder leer los datos?.

Un saludo.
__________________
"El río más profundo siempre es el más silencioso"
  #2 (permalink)  
Antiguo 30/07/2009, 00:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Terminación Thread

Para esperar a que un Thread termine, existe el método join():
http://java.sun.com/j2se/1.5.0/docs/...ead.html#join()

O sea, llamas a join() sobre ese mismo objeto Thread y el proceso se bloqueará hasta que el Thread termine.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 30/07/2009, 07:28
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Terminación Thread

Y un problema más...

Vereis, como dije antes, tengo un hilo que rescata información vía HTTP de un servidor. La aplicación principal (que es un MIDlet) llama al Thread para que le devuelva los valores que ha recuperado y procesarlos.

El problema es que cuando llamo a los métodos que devuelven los valores del Thread, estos métodos devuelven los valores que se adquirieron en el constructor. Sin embargo, cuando imprimo los valores de los atributos desde el Thread, se escriben los valores correctos.
Me explico mejor mostrando un trozo de código.



Código:
public class CogeValores extends Thread {
            
            private String valor;

            public CogeValores(){
                      valor = null;
  
           }

            public void run(){
                //Aqui realizamos todas las conexiones HTTP y el atributo valor adquiere
                //su nuevo contenido
                System.out.println(valor); //En la consola me muestra el valor que le
                                                         //le corresponde
                }

              public String getValor(){
                       return valor;
              }

}


public class Main extends MIDlet {

             //Y en cierto momento necesito hacer esto

            CogeValores a = new CogeValores();
            a.start();
            System.out.println(a.getValor()); //Y aqui me sigue saliendo null, tras haber
                                                                //ejecutado el thread



}
¿Se me está escapando algo?. ¿Como recupero los datos adquiridos por el Thread entonces?.

¡Un saludo!.
__________________
"El río más profundo siempre es el más silencioso"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:03.