https://github.com/tiosambr/jantardosfilosofos
O código em Java resolve o problema clássico do "Jantar dos Filósofos". Cinco filósofos alternam entre pensar e comer em uma mesa redonda. Cada filósofo, representado por uma thread, requer dois garfos adjacentes para comer.
https://github.com/tiosambr/jantardosfilosofos
filosofos jantar jantar-dos-filosofos locks reentrantlock
Last synced: 3 months ago
JSON representation
O código em Java resolve o problema clássico do "Jantar dos Filósofos". Cinco filósofos alternam entre pensar e comer em uma mesa redonda. Cada filósofo, representado por uma thread, requer dois garfos adjacentes para comer.
- Host: GitHub
- URL: https://github.com/tiosambr/jantardosfilosofos
- Owner: TIOSAMBR
- Created: 2023-11-24T17:48:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-24T17:55:39.000Z (over 1 year ago)
- Last Synced: 2023-11-24T18:38:54.828Z (over 1 year ago)
- Topics: filosofos, jantar, jantar-dos-filosofos, locks, reentrantlock
- Language: Java
- Homepage:
- Size: 0 Bytes
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JantarDosFilosofos
# Descrição do Código - Jantar dos Filósofos em Java com Threads
O código implementa uma solução para o clássico problema do "Jantar dos Filósofos" em Java, utilizando Threads e locks (ReentrantLock). O problema envolve cinco filósofos sentados à mesa, alternando entre pensar e comer. Cada filósofo precisa de dois garfos adjacentes para comer. O código cria uma representação dessa situação, onde cada filósofo é uma thread, e os garfos são protegidos por locks para evitar condições de corrida.
# 1. Classe Filosofo:
Atributos:
id: Identificador único do filósofo.
garfoEsquerdo: Lock representando o garfo à esquerda do filósofo.
garfoDireito: Lock representando o garfo à direita do filósofo.
Método pensar():Simula o ato de pensar por um período de tempo (1 segundo).
Método comer():Simula o ato de comer por um período de tempo (1 segundo).
Método run():Executa a lógica do filósofo em um loop infinito:
Pensar.
Tentar pegar os garfos à esquerda e à direita.
Comer.
Liberar os garfos.# 2. Classe JantarDosFilosofos:
Método main():
Inicializa o número de filósofos e um array de locks representando os garfos.
Inicializa as threads dos filósofos e os seus respectivos garfos, criando uma mesa redonda.# 3. Comentários Adicionados:
Comentários foram incluídos para elucidar as etapas críticas do código.
Identificação de ações como pensar, pegar garfos, comer e liberar garfos.
Inicialização dos garfos e das threads dos filósofos.
Este código Java utiliza o conceito de locks (ReentrantLock) para garantir exclusão mútua e resolver o problema clássico do Jantar dos Filósofos, onde os filósofos alternam entre ações de pensar e comer, evitando impasses ao acessar os garfos compartilhados.