Tengo un hilo, A
que tiene una lista. La lista contiene algunos objetos. Ahora quiero diseñar un mecanismo por el cual pueda enviar un mensaje al hilo A
.Comunicación entre dos hilos
Thread A
se ejecuta en un bucle (no espera ni duerme). Algún otro hilo, B
, envía un mensaje al hilo A
y el hilo A
vacía todas sus colas.
¿Cómo puedo enviar mensajes entre hilos?
class A extends Thread {
List<Object> objs = something; //Init it
void run() {
while(true) {
//Body which works on objects.
//After receiving an external message, "A" should perform some action, for example, empty objects.
}
}
}
EDIT: ¿Puedo hacerlo de esta manera?
class A extends Thread {
List<Object> objs = something; //Init it
Boolean flag = false;
public void setFlag(boolean value) {
synchronized(flag) {
this.flag = value;
}
}
public void getFlag() {
synchronized(flag) {
return this.flag;
}
}
void run() {
while(true) {
//Body which works on objects.
//After receiving an external message, A should perform some action, for example, empty objects.
if (getFlag == true)
//Empty list
}
}
}
En Java que por lo general no envían mensajes entre procesos, pero se utilizan objetos sincronizados para pasar valores entre los hilos. – toto2
He sincronizado las variables de instancia según lo methoied en mi nueva edición, ¿funcionará? – akshay
@akshay Editas se ve bien (excepto que quisiste decir 'if (getFlag() == verdadero)'). – toto2