1
resposta

[Projeto] Mão na massa: criando um sistema de uma biblioteca | Minha resolução

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();
    }
}
1 resposta

Oi, Gabriel! Como vai?

Agradeço por compartilhar seu código.

Gostei bastante da forma como você utilizou Thread e o método join() para organizar o fluxo e garantir que ambas as reservas sejam concluídas antes da mensagem final. Isso mostra atenção ao controle de concorrência.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!