Página 1 de 1

Lanzar hilos dinamicos

Publicado: 06 Jul 2013, 22:47
por davidad
Quiero poder conseguir lanzar un numero determinado de hilos pero en tiempo de ejecucion. Me explico con un trozo de codigo:
for (int i = 1; i <= numHilos; i++) {
ThreadTest hl = new ThreadTest ();
hl.run(a, b, c, i);
		}
Eso no funciona pues hasta que no termine el thread no devuelve el control. ¿Alguna manera para no tener que poner:
ThreadTest hl1 = new ThreadTest ();
ThreadTest hl2 = new ThreadTest ();
ThreadTest hl3 = new ThreadTest ();
ThreadTest hl4 = new ThreadTest ();
.
.
.

Re: Lanzar hilos dinamicos

Publicado: 06 Jul 2013, 23:07
por Sombra Noturna
bueno

Re: Lanzar hilos dinamicos

Publicado: 07 Jul 2013, 00:44
por adwind
davidad escribió:Quiero poder conseguir lanzar un numero determinado de hilos pero en tiempo de ejecucion. Me explico con un trozo de codigo:
for (int i = 1; i <= numHilos; i++) {
ThreadTest hl = new ThreadTest ();
hl.run(a, b, c, i);
		}
Eso no funciona pues hasta que no termine el thread no devuelve el control. ¿Alguna manera para no tener que poner:
ThreadTest hl1 = new ThreadTest ();
ThreadTest hl2 = new ThreadTest ();
ThreadTest hl3 = new ThreadTest ();
ThreadTest hl4 = new ThreadTest ();
.
.
.

Para invocar threads no sincronizados debes ejecutar el método start();

Ejemplo:

ThreadTest hl3 = new ThreadTest ();
hl3.start();

ya que tu llamas run, y lo que haces es llamar el metodo como otro cualquiera y asi pierdes las propiedades de un thread(Hilo), en camnio el método .start(), llama al metodo run internamente y continua con la ejeción aunque la rutina del metodo run no haya terminado.

Re: Lanzar hilos dinamicos

Publicado: 07 Jul 2013, 23:42
por davidad
Muchas gracias Adwind, exactamente lo uso así:
for(int i=1;i<20;i++){
Thread hl = new Thread(new ThreadTest(a, b,c,i);
hl.start();
}
y funciona muy bien, no conocia la diferencia entre run y start.