Título: Dudas sobre hilos Publicado por: m@o_614 en 12 Febrero 2015, 04:53 am Saludos tengo el siguiente código que trata sobre construir una aplicación basada en hilos que contemple la ejecución de un hilo evento y su interacción con un hilo Thread.
Para realizar la aplicación tengo que cumplir con los siguientes requerimientos: 1. Ambos hilos impriman un contador en áreas de texto particulares. 2. Un hilo imprima cada segundo y el otro cada 2 segundos. 3. Incluir un botón para asociarlo en tiempo compilación a uno cualquiera de los hilos. 4. Al presionar el botón, que el hilo correspondiente suspenda su ejecución. 5. El hilo reanude su ejecución tras otro botonazo con el mismo botón que el punto anterior. 6. La suspensión del hilo conlleve a suspender los efectos del hilo sobre su correspondiente área de texto. 7. El evento del botonazo, provoque el paso de solo un mensaje al objeto hilo, indicándole solo que ha ocurrido un botonazo, por lo que el método a invocar no deberá recibir parámetro. y el codigo es el siguiente: Código
El problema que tengo es que en el método run() que es el que ejecuta el hilo, no se como hacerle para asignarle un area de texto para que imprima en ella, porque el area de texto la tengo declarada en la clase de interfaz, y en el actionPerformed de la clase interfaz, que es la que me dice que acción ejecutar con el evento botonazo, pero no tengo muy claro para hacer que en el primer botonazo pare el hilo, que al segundo reanude la ejecución y asi sucesivamente de antemano gracias Título: Re: Dudas sobre hilos Publicado por: 3n31ch en 12 Febrero 2015, 05:32 am Con hilo evento te refieres a un event dispatch thread? si es así porque creas dos hilos?
Por cierto nunca añadiste el botón. Te intentaría ayudar, pero si te soy sincero no te entiendo nada, le diré a Gus a ver si el entiende que es lo que quieres :P Edito: Ok, el tampoco te entendió. Te recomiendo que modifiques tu mensaje y solo pongas tu duda o dudas (enumeradas) de esta manera te podremos responder, ya que con el mensaje actual no me queda claro que es lo que quieres xD! Título: Re: Dudas sobre hilos Publicado por: Usuario Invitado en 12 Febrero 2015, 06:07 am Para serte sincero no te entendí un carajo xD. Releyendo el enunciado entendí algo.
Usa el patrón MVC para poder interactuar entre modelo/vista/controlador. Vista: Código
Controlador: Código
Una tarea controlada por tiempo: (Modelo) Código
El método schedule recibe un objeto tipo TimerTask, el timeout que es el tiempo de espera el cual una vez expirado se ejecutará por primera vez el thread y el intérvalo de ejecución en milisegundos. Solo eso te pude entender. Espero te sirva de algo. Título: Re: Dudas sobre hilos Publicado por: m@o_614 en 14 Febrero 2015, 00:58 am muchas gracias por sus respuestas, creo que no me explique muy bien porque de hecho yo tampoco entendía completamente las especificaciones para el código.
Espero poderme explicar mejor esta vez. Yo tengo una interfaz gráfica en la que tengo 2 areas de texto y un boton. En cada area de texto me va a imprimir el contador de un hilo(como son dos areas de texto son 2 hilos). El contador de ambos inicia desde 0. Uno de los hilos va impriendo el contador cada segundo y el otro cada 2 segundos. Después voy a elegir uno de los hilos(el que sea), y ese hilo lo voy a asociar con el boton de la interfaz. Cuando yo oprima el boton va a ocurrir un evento boton, en el cual se tiene que parar la ejecución de ese hilo solamente, (el otro seguira imprimiendo como si nada), esto con el uso de una bandera. Y es ahi donde esta el problema que tengo porque para un hilo la bandera va a tener valor true siempre, pero en el otro hilo cuando tenga un botonazo la bandera va a ser false, indicando que pare Código
lo que quiero es tener una variable booleana en la que su valor en un hilo sea siempre true,y en el otro se haga false cuando haya un botonazo Título: Re: Dudas sobre hilos Publicado por: 3n31ch en 14 Febrero 2015, 01:11 am :xD :xD :xD :xD
La vez pasada creí que querías parar el event dispatch thread o algo asi :xD No entiendo que es lo que te complica. Por que no haces en la clase Hilo un: Código
Después de todo solo quieres detenerlo no? (no quiere reanimarlo) y luego en la interfaz haces: Código
o no funciona? Título: Re: Dudas sobre hilos Publicado por: m@o_614 en 14 Febrero 2015, 02:09 am muchas gracias Nac-ho, funciona perfectamente. No se por qué se me complicó algo tan simple. Una última duda si después de que de el primer botonazo(con la respectiva suspensión) yo quiero reanudar la impresión con otro botonazo, ¿cuál sería la mejor opción???
Título: Re: Dudas sobre hilos Publicado por: 3n31ch en 14 Febrero 2015, 02:37 am Si no te quieres complicar, al segundo botonazo reasigna asl hiloEvento un nuevo Thread con las mismas características y dale start otra vez (código basura, pero funcionara)
En el thread agrega un get: Código
Y este seria tu action performed: Código
:xD :xD :xD (esto se me ocurre para que no tengas que ocupar ningún conocimiento extra al que ya tienes). Modifico. Me arrepentí por darte una respuesta tan fea :xD te dejare una un poco mejor: puedes detener el hilo sin modificar tu boolean. haciendo lo siguiente: Código
El tema es que hiloEvento.wait() puede generar un error, asi que tendras que contenerlo en un try catch, igual como lo haces con Thread.sleep(); Entonces te quedaría algo así: Código
Eso para pausar, y para reanudar: Código
^^ PD: te recomiendo estudiar mas tu lógica, retrocede un poco y haz ejercicios que no utilicen thread ni nada raro, solo clases y objetos, seguramente en el foro encontraras ejercicios. PD: Una manera bonita de hacer tu ejercicio es mediante synchronized por si acaso, pero eso que te puse debería ser suficiente (espero, no creo que de error). Suerte, y pásate por los post de buenas practicas y convenciones en java (eso de utilizar mas de una clase en un archivo...) Título: Re: Dudas sobre hilos Publicado por: m@o_614 en 15 Febrero 2015, 01:53 am Saludos Nac-ho, tienes razon, necesito practicas más. Esta es mi primer practica en la que uso hilos y es por eso que me pierdo. Ya estuve leyendo sobre el metodo wait() y el notify() junto con synchronized. El wait creo que funciona correctamente, pero el notify que es el que me desbloquea el hilo no me reanuda la impresion, qué estoy haciendo mal?
Código
en la función de ocurrioBotonazo, en la parte donde dice que puedeImprimir es verdadero otra vez ( o sea que hubo un 2do botonazo) lo mando a reanudar() y el notify no me lo cacha Título: Re: Dudas sobre hilos Publicado por: 3n31ch en 15 Febrero 2015, 02:18 am Ahora estoy algo apurado, asi que te pondré el código, analizalo:
Este es tu thread: Código
Este es tu actionPerformed: Código
// El código no es robusto pero funciona. Y ya en serio, pásate por los post de buenas practicas. Y para de avanzar con Threads y esas cosas. Estudia lo basico. PD: Se me olvidaba. Agrega el JFrame.EXIT_ON_CLOSE en interfaz. |