La cena de los filosofos JAVA

973 palabras 4 páginas
El problema es el siguiente: Cinco filósofos se sientan alrededor de una mesa y pasan su vida comiendo y pensando. Cada filósofo tiene un plato de arroz chino y un palillo a la izquierda de su plato. Cuando 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.
…ver más…

A cada uno se le da un único permiso: for (int i = 0; i < numeroFilosofos; i++) { // Sólo 1 permiso porque cada palillo­semaforo solo puede tenerlo un filósofo a la vez. palillos_semaforo[i] = new Semaphore(1); } // Crear los objetos de tipo Filosofo que extienden Thread, e iniciarlos. // Al constructor se le pasa un id, el array de los semaforos // y el array de sus 2 palillos: for (int idFilosofo = 0; idFilosofo < numeroFilosofos; idFilosofo++) { new Filosofo(idFilosofo, palillos_semaforo, palillosFilosofo).start(); } } } CLASE FILOSOFO package cena; import java.util.Random; import java.util.concurrent.Semaphore; /** * Hilo filósofo. Su método run() realiza un bucle infinito que consite en * invocar a los métodos pensar() y comer(): ... ­>; pensar ­>; comer ... *
* @author netsis.es */ public class Filosofo extends Thread { /** * Índice que identifica al filósofo (un entero del 0 al 4) */ private final int idFilosofo; /** * Array de semáforos. Cada semáfaro es un palillo. */ private final Semaphore[] palillos_semaforo; /** * Array de enteros 2 dimensiones. Por cada valor de su primer índice * (filas) almacena los palillos que necesita el filósofo de ese índice para * comer. Por ejemplo: el filósofo de índice 0

Documentos relacionados

  • Historia del teatro guiñol en mexico
    975 palabras | 4 páginas
  • Textos informativos y de divulgacion
    1752 palabras | 8 páginas
  • Planeaciones Para Nivel Preescolar
    6850 palabras | 28 páginas
  • Planeaciones Para Nivel Preescolar
    6835 palabras | 28 páginas
  • tarea de psicologia
    33105 palabras | 133 páginas
  • Etica y educacion
    736 palabras | 3 páginas
  • Cuestionario titulos valores
    3183 palabras | 13 páginas
  • La soledad de los números primos
    1093 palabras | 5 páginas
  • Reglamento interno de trabajo en obras de construccion
    2301 palabras | 10 páginas
  • Periodos de la historia de colombia
    596 palabras | 3 páginas