saber - hilos en java teoria
Duerme un hilo hasta que se atienda un evento en otro hilo (2)
Tengo dos hilos en una aplicación de Android, uno es el hilo de vista y el otro es el hilo de trabajo. Lo que quiero hacer es suspender el hilo de trabajo hasta que el hilo de vista finalice el manejo del método onDraw.
¿Como puedo hacer esto? ¿Hay alguna espera por la señal o algo así?
Comparta un java.lang.Object entre los dos hilos, cuyo único propósito es indicar el hilo del trabajador cuando puede continuar su trabajo. Siempre que el hilo del trabajador llegue a un punto donde debería dormir, hace esto:
stick.wait();
Cuando el subproceso de vista finaliza su trabajo onDraw, lo llama:
stick.notify();
Tenga en cuenta el requisito de que el hilo de vista posee el monitor en el objeto. En su caso, esto debería ser bastante simple de aplicar con un pequeño bloque de sincronización:
void onDraw() {
...
synchronized (stick) {
stick.notify();
}
} // end onDraw()
Consulte el javadoc para java.lang.Object en estos métodos (y notifyAll, por las dudas); están muy bien escritos.
Si desea una API concurreny de nivel superior (con cosas como Barriers), puede probar el respaldo de la API de concurrencia java 5, que funciona en Java 1.3 y superior, y puede funcionar en Android. Los gustos de Object.wait / notify funcionarán, pero pueden ser un tanto escuetos.