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

Parar un Thread

Estas en el tema de Parar un Thread en el foro de Java en Foros del Web. Buenas, pues la idea que quiero es que tengo un programa de un Chat que ejecuta un input, es decir, lee de un JTextField, y ...
  #1 (permalink)  
Antiguo 24/06/2009, 19:56
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Parar un Thread

Buenas, pues la idea que quiero es que tengo un programa de un Chat que ejecuta un input, es decir, lee de un JTextField, y lo que lee le envia el servidor, pero, quiero esperar a que ese Input lea, mientras que el botón de enviar, no se ejecute o haga el actionperformed que es el que depertara a la hebra.

¿Como puedo hacer esto?, en el programa Input colo un interrupted... o como puedo hacerlo.

Muchas gracias, necesito ayuda.
Saludos!
  #2 (permalink)  
Antiguo 24/06/2009, 20:06
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Parar un Thread

He estado viendo el metodo suspend y resume, pero esta obsoletos...

Saludos!
  #3 (permalink)  
Antiguo 24/06/2009, 20:18
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Parar un Thread

Tampoco me ha funcionado con variables condición, no se que mas puedo hacer.

Saludos!
  #4 (permalink)  
Antiguo 25/06/2009, 03:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Parar un Thread

¿Que tiene que ver parar un Thread con enviar un mensaje cuando te escriben? Simplemente has de escuchar el evento de que te hayan escrito y le hayan dado al boton de enviar o al intro, no veo donde aparece un Thread que haya que parar.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 25/06/2009, 06:41
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Parar un Thread

Explico, la idea es que tengo un programa corriendo con un conexión al Socket del servidor que lo que hace es enviarle peticiones al servidor, cuando el servidor lo recibe, los reproduce a todos los clientes que tiene.

Por lo tanto el programa que hace de cliente input, tiene que esperar a que exista una pulsación en el botón para recoger lo del TextField y enviarlo al servidor, de esa forma el programa Thread, debe de suspenderse hasta que el boton sea pulsado entonces el otro programa lo recogera y lo enviará.

Asi es como lo he pensado, y con un sleep(3000) me lo hace bien, pero si pongo un suspend no funciona nada igual que si hago un wait, dado a que se carga las conexiones TCP.

A lo mejor la idea que tengo no es muy buena, a ver si me dice algo mejor, y lo cambio.

Saludos!
  #6 (permalink)  
Antiguo 25/06/2009, 09:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Parar un Thread

Eummm, cuando pulsen el boton enviar se producirá un evento, así que no hace falta que tengas un Thread esperando continuamente a ver si le han dado o no, de hecho no es que "no haga falta" es que no deberías hacerlo así puesto que bloquearas partes de tu programa haciendlo.

Simplemente debes añadir un listener a tu boton y cuando se lance, sabes que le han dado al boton de envíar y le mandas al servidor el mensaje. Listo.

S!

PD: Aquí el trozo del Java tutorial que trata el tema de los eventos y como "escucharlos" desde tus programas: http://java.sun.com/docs/books/tutor...nts/index.html
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 25/06/2009, 18:48
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Parar un Thread

Si eso lo tengo claro, el problema que tengo un programa corriendo, para que cuando se pulse enviar, lo coja el programa que tiene el Socket abierto con el servidor.

El problema que tengo es como decirle al thread que tiene el Socket abierto que es ahora cuando tiene que coger el texto.

Otra opcion es que cuando se produzca un Evento en el Boton se abra el socket hacia el servidor, pero de esa forma tendria que crear un Socket por cada vez que se pulse el boton enviar, lo cual eso no es viable.

Es decir, el cliente que mete datos tendría que hacer esto si leyese de consola:

while(linea!=null)
{
linea = leer.linea();
enviar(linea);
}

Ese seria el código en pseudocodigo que haria el cliente que envia datos, pero claro, leer.linea es bloqueante y espera hasta que el usuario escriba algo, pero el TextField con el JButton no lo es, de esa forma, estaría en un bucle infinito por eso quiero parar ese Thread, y el action del JButton que lo inicialice de nuevo, pero no se como hacerlo.

Saludos, y muchas gracias!
  #8 (permalink)  
Antiguo 26/06/2009, 00:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Parar un Thread

La cuestion es que el Thread que esta parado leyendo del socket y el Thread que lanza el evento de que te han pulsado el boton son dos threads diferentes y por eso no se bloquean el uno al otro.

Puedes ver un ejemplo escrito por Chuidiang aquí: http://www.chuidiang.com/java/socket...et_hilos_2.php
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
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 21:54.