Tema: Threads
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/05/2015, 16:42
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Threads

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Me parece que es el metodo join() el que te interesa.
https://docs.oracle.com/javase/7/doc...ead.html#join()

Un saludo
El join() se refiere al tiempo de vida máximo de un thread (por lo que puedo traducir). Y si se pone 0 no se acaba nunca aunque acabe con sus instrucciones. Se quedaría como a la espera (ocupando memoria) y podríamos matar o manejar el thread desde otra parte de nuestro código. No es lo que busco.

He averiguado algunas cosas sobre el objeto thread:
-Los hilos tienen un nombre que es "Thread-X", donde X es el número del hilo.
-Cuando un hilo muere, su nombre queda libre. Ej si están corriendo Thread-1, Thread-2,Thread-3 y Thread-2 termina de ejecutarse y muere... el siguiente hilo que se cree tomará el nombre Thread-2... y si luego se crea otro sería Thread-4.

-hay un modo de ejecutar los métodos llamado "synchronized". Al indicar en un método con esa palabra que está sincronizado, solo 1 hilo a la vez puede ejecutarlo. Sin embargo, el único sitio donde me sirve es en el propio void run que inicia la ejecución del hilo, de forma que al tener múltiples hilos, y todos ejecutar la instrucción start... todos irían a ese método sincronizado void run... pero resulta que eso no funciona, y varios hilos se me ejecutan al mismo tiempo. He probado en otros sitios de mi código y en ninguno parece que funcione.

Se me ha ocurrido crear un void en la misma clase que la clase que tiene el void run de mis hilos secundarios..., y pasar todo el código del void run a ese void. Ese otro void le he puesto synchronized... y aun así no los sincroniza, todos mis hilos lo ejecutan al mismo tiempo. (He llegado a tener 32 hilos antes de que empiecen a dar problemas de memoria).

- Existe un método wait(X) que hace esperar en un máximo de 99.999 (aunque en los docs dice 999.999 lo he provado y da error con más de 99.999) milisegundos. En el caso de no indicar tiempo, el tiempo será indefinido hasta que otro hilo envíe a este un Notify.

- De momento lo que se me ocurre es utilizar el wait y la propiedad del nombre del hilo para controlarlos. Pero es bastante complicado trabajar con los nombres.

Cualquier tipo de información extra que me aporten será bien recibida.

Última edición por Kritik; 20/05/2015 a las 17:01