Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/02/2010, 07:11
Avatar de Xerelo
Xerelo
 
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: [Solucionado]Threads: ¿Cómo usar wait() y notify()?

A pesar de mi explicación, has entendido perfectamente lo que quería decir en el último punto.

Sin embargo, justo lo que argumentas como lógico (para mí también lo es), al leer la web de Chuidiang, no me queda tan claro que lo sea.

[URL="http://www.chuidiang.com/java/hilos/wait_y_notify.php"]http://www.chuidiang.com/java/hilos/wait_y_notify.php[/URL]

Cita:
Si varios hilos van llamando a wait() quedan bloqueados y en una lista de espera, de forma que el primero que llamó a wait() es el primero de la lista y el último es el útlimo.

Cada llamada a notify() despierta al primer hilo en la lista de espera,
Por lo que entiendo, la llamada a un notify() no despierta al hilo que ejecuta el notify(), sino al primero de una lista, siendo muchas las ocasiones en las que no podamos prever cual será. Tal y como yo entiendo eso, cualquier hilo puede llamar al notify() que despierte al hilo parado, y por eso pensé que lo más lógico sería que fuese el principal.

Incluso comenta que estos notify() pueden acumularse, y ser utilizados por un hilo que entra en wait() posteriormente al lanzamiento del notify().

Cita:
Si hacemos varios notify() antes de que haya hilos en espera, quedan marcados todos esos notify(), de forma que los siguientes hilos que hagan wait() no se quedaran bloqueados.
La verdad es que el tema de los hilos es bastante complejo, así que es mejor verlo pasito a pasito y probar todo lo que se te ocurra, por absurdo que parezca.