Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Error usando Lock

Ao rodar, na execução ele apresenta

João batendo na porta
Silvia batendo na porta
Caio batendo na porta
Pedro batendo na porta
Caio Entrando no banheiro
Silvia Entrando no banheiro
João Entrando no banheiro
Silvia fazendo coisa demorada
Caio fazendo coisa rapida
João fazendo coisa rapida
Silvia dando descarga
Silvia lavando mao
Silvia saindo do banheiro
Pedro Entrando no banheiro
Pedro fazendo coisa demorada
Pedro dando descarga
Pedro lavando mao
Pedro saindo do banheiro
Caio dando descarga
Exception in thread "Caio" Exception in thread "João" João dando descarga
João lavando mao
Caio lavando mao
João saindo do banheiro
Caio saindo do banheiro


java.lang.IllegalMonitorStateException
    at java.base/java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:175)
    at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1007)
    at java.base/java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:494)
    at br.com.banheiro.Banheiro.fazNumero1(Banheiro.java:29)
    at br.com.banheiro.TarefaNumero1.run(TarefaNumero1.java:15)
    at java.base/java.lang.Thread.run(Thread.java:833)
java.lang.IllegalMonitorStateException
    at java.base/java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:175)
    at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1007)
    at java.base/java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:494)
    at br.com.banheiro.Banheiro.fazNumero1(Banheiro.java:29)
    at br.com.banheiro.TarefaNumero1.run(TarefaNumero1.java:15)
    at java.base/java.lang.Thread.run(Thread.java:833)
1 resposta
solução!

Pelo que eu vi aparentemente o sychronied faz a mesma coisa.