public class Main {
public static void main(String[] args) {
var livroMaria = new Livro("Harry Potter", false);
var operacao = new OperacaoReserva(livroMaria);
Thread reservaMaria = new Thread(operacao, "Maria");
Thread reservaJoao = new Thread(operacao, "João");
reservaMaria.start();
reservaJoao.start();
try {
reservaMaria.join();
reservaJoao.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("Reservas finalizadas");
}
}
public class OperacaoReserva implements Runnable{
private Livro livro;
public OperacaoReserva(Livro livro) {
this.livro = livro;
}
public void reservarLivro() {
System.out.println("Iniciando conversa: ");
if (!livro.isReservado()) {
livro.setReservado(true);
System.out.println("Reserva feita com sucesso! Aproveite a leitura, " + Thread.currentThread().getName());
} else {
System.out.println("O livro já foi reservado, " + Thread.currentThread().getName());
}
}
@Override
public void run() {
reservarLivro();
}
}