Repositório com projetos desenvolvidos na disciplina de Programação Concorrente, utilizando Java, JavaFX, threads e mecanismos de sincronização para representar problemas clássicos da área.
Simulação visual de dois trens percorrendo trilhos compartilhados, com controle de direção e velocidade. Esta versão serve como base para observar o comportamento da animação antes da aplicação de técnicas de concorrência.
Cada trem é executado por uma thread independente. O acesso aos trechos críticos é controlado por variável de travamento, estrita alternância ou solução de Peterson, evitando colisões nos trilhos compartilhados.
Representa um produtor que insere itens em um buffer circular e um consumidor que os remove. Os semáforos mutex, empty e full controlam a exclusão mútua e impedem consumo com o buffer vazio ou produção com o buffer cheio.
Cinco filósofos alternam entre pensar, esperar e comer, compartilhando garfos com seus vizinhos. Semáforos e estados individuais garantem que filósofos adjacentes não utilizem os mesmos garfos simultaneamente.
Simula leitores acessando uma base de dados simultaneamente e escritores realizando acesso exclusivo. Semáforos coordenam as operações para impedir leitura durante uma escrita e a atuação simultânea de escritores.
Simula uma barbearia com quantidade limitada de cadeiras. O barbeiro dorme quando não há clientes, acorda quando alguém chega e atende a fila, enquanto clientes desistem quando não existem vagas disponíveis.
Simula vários carros executados por threads em percursos que possuem trechos e cruzamentos compartilhados. Semáforos e reservas de regiões críticas coordenam o tráfego, evitando colisões e bloqueios entre os veículos.
Com Java 8 e JavaFX configurados, acesse a pasta do projeto desejado e execute:
javac Principal.java
java PrincipalProjetos da disciplina Programação Concorrente - 2026.1, ministrada pelo professor Marlos André Marques Simões de Oliveira.






