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 ();
.
.
.
En 1º en 2º o en 3º BETICO hasta que muera
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.
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.
En 1º en 2º o en 3º BETICO hasta que muera
Responder

Volver a “Java”