estoy muy confuso acerca de estas dos descripciones:¿Cómo entender el método de esperar y notificar en Java Thread?
- "Los bloques del método espera el subproceso de llamada y abandona el bloqueo del monitor"
- "El método de notificar a desbloquea uno esperando hilo, pero no renunciar a la monitorear bloqueo "
aquí está mi pregunta:
sé que cada objeto en Java tiene un bloqueo, pero lo que es el" moni tor lock "significa? ¿es lo mismo que el bloqueo del objeto?
¿Por qué el método de notificación debe abandonar el bloqueo del monitor?
Si trato de hacer un objeto de espera con el siguiente código:
class simpleTask extends Thread { int waitingTime; public simpleTask(int waitingTime) { this.waitingTime = waitingTime; } public void run() { synchronized(this) // this is a reference of current object { try { this.wait(waitingTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Al igual que la primera descripción anterior, es que los medios el objeto actual es bloqueado por palabra clave sincronizada, y luego esperar método libera el bloqueo?
¡Gracias por su respuesta! Pero en su explicación: "Cuando llamas someObject.wait() el bloqueo del hilo en algún objeto se libera ... y luego se vuelve a adquirir antes de que la llamada a wait() regrese", ¿quién volverá a adquirir el bloqueo antes de que la llamada a wait() regrese? ¡Gracias de nuevo! –
@Miles Zhang: el mismo hilo lo volverá a adquirir, siempre que esté disponible (es decir, que otro hilo ya no lo adquirió). – Tudor
@MilesZhang - actualizó la respuesta para aclarar. –