Junior — Middle
¿Se utilizan en la práctica mecanismos como synchronized, wait y notifyAll para gestionar hilos?
sobes.tech AI
Respuesta de la IA
Sí, en la práctica de programación en Java, los mecanismos synchronized, wait y notifyAll se utilizan para gestionar hilos, especialmente en casos donde se necesita implementar sincronización y coordinación de bajo nivel entre hilos.
- synchronized se usa para garantizar exclusión mutua al acceder a recursos compartidos.
- wait() hace que el hilo actual espere, liberando el monitor, hasta que otro hilo llame a notify() o notifyAll().
- notifyAll() despierta a todos los hilos que están esperando en ese objeto.
Sin embargo, en aplicaciones modernas, se suelen usar herramientas de nivel superior del paquete java.util.concurrent (por ejemplo, Lock, Semaphore, CountDownLatch), ya que son más flexibles y convenientes.
Ejemplo de uso de synchronized, wait y notifyAll:
class SharedResource {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
// continuar con el trabajo
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}