Threads en Java

rafa
07 de Diciembre del 2005
Buenas.

Estoy desarrollando un pequeño programa en Java para probar los hilos:

PruebaThread.java

public class PruebaThread implements Runnable {
Prueba prueba;

public PruebaThread(Prueba pruebar) {
this.prueba = prueba;
}

public void run() {
// Aqui accedo a prueba.entero o prueba.lista
}
}

Prueba.java

public class Prueba {
int entero;
ArrayList lista;

public void lanzaHilos() {
ThreadGroup threadGroup;

threadGroup = new ThreadGroup("Spider threads");

PruebaThread pruebathread = new PruebaThread(this);
new Thread(threadGroup, pruebathread).start();

PruebaThread pruebathread2 = new PruebaThread(this);
new Thread(threadGroup, pruebathread2).start();

PruebaThread pruebathread3 = new PruebaThread(this);
new Thread(threadGroup, pruebathread3.start();
}
}

Mi pregunta es: Para acceder a prueba.lista o prueba.entero ¿tengo que tener algun cuidado?. Mi idea es que los hilos vayan cogiendo elementos del arraylist lista (como si fuera una cola). Si no encuentran ningun elemento, esperan durante 1 segundo y vuelven a comprobar. ¿Tengo que utilizar synchronize () {} o wait() y notify()? ¿o nada?

Muchas Gracias

Rafa

Diego
07 de Diciembre del 2005
Te recomiendo que utilices la clase Vector, que es más ineficiente que la clase ArrayList, pero es precisamente porque es segura frente a los hilos y te despreocupes de lo demás.