sistema operativo
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étodospensar() 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 deenteros 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 necesita lospalillos de
* índices {0,4}, el de índice 1 los de índices {1,0}, etc...
*/
private final int[][] palillosFilosofo;
/**
* El índice del palillo a la izquierda delfilósofo. Se obtiene en el
* constructor a partir del array de enteros palillosFilósofo.
*/
private final int palilloIzquierdo;
/**
* El índice del palillo a la derecha delfilósofo. Se obtiene en el
* constructor a partir del array de enteros palillosFilósofo.
*/
private final int palilloDerecho;
/**
* Número aleatorio para simular el tiempo quetardan los filósofos en comer
* y pensar.
*/
private final Random tiempoAleatorio = new Random();
/**
* Constructor de tres parámetros, cada uno de los cuales se guardaráen una
* variable local para usarla cuando sea necesario.
*
* @param idFilosofo int: índice que identifica a cada filósofo (entero del
* 0 al 4).
* @parampalillos_semaforo Semaphore[]: array de semáforos, uno por cada
* palillo.
* @param palillosFilosofo int[][]: array de enteros 2 dimensiones. Por cada
* valor de su primer índice (filas)...
Regístrate para leer el documento completo.