La cena de los filosofos JAVA
un filósofo quiere comer arroz, cogerá los dos palillos de cada lado del plato y comerá. El problema es el siguiente: establecer un ritual (algoritmo) que permita comer a los filósofos. El algoritmo debe
satisfacer la exclusión mutua (dos filósofos no pueden emplear el mismo palillo a la vez), además de
evitar el interbloqueo y la inanición.
CLASE MAIN (CENA)
/* * Pueden estar comiendo 2 filósofos a la vez:
* El filósofo 0 puede comer con el filósofo 2 o con el 3.
* El filósofo 1 puede comer con el filósofo 3 o con el 4.
* El filósofo 2 puede comer con el filósofo 4 o con el 0. * El filósofo 3 puede comer con el filósofo 0 o con el 1.
* El filósofo 4 puede comer con el filósofo 1 o con el 2.
*/
package cena;
import java.util.concurrent.Semaphore;
/**
*
* @author Javi
*/ public class Cena {
/**
* @param args the command line arguments
*/
final static int numeroFilosofos = 5;
/** * Array de 2 dimensiones que tiene tantas filas como filósofos. Cada fila
* es un un array de 2 enteros que representan los 2 palillos del filósofo:
* el de su izquierda y el de su derecha, por este orden.
*/ final static int[][] palillosFilosofo = {
{0, 4}, // filosofo 0
{1, 0}, // filosofo 1
{2, 1}, // filosofo 2
{3, 2}, // filosofo 3
{4, 3}}; // filosofo 4
/** * Array de objetos Semaphore que representan a los palillos. Hay tantos
* palillos como filósofos.
*/
final static Semaphore[] palillos_semaforo = new Semaphore[numeroFilosofos];
/** * Define los parámetros necesarios para construir hilos de la clase
* Filósofo. Se crean los 5 filósofos y se inician.
* ...
Regístrate para leer el documento completo.