Filosofos
Facultad de Cs. De la Computación
Programación Concurrente y Paralela
Filósofos
Profr:
María del Carmen Cerón Garnica
Alumnos:Roberto Alejandro Bravo Arredondo
Aldo Flores Aparicio
Matricula:
200824268
200834334
29 de noviembre de 2011
PROBLEMÁTICA DE FILOSOFOS
Cinco filósofos se sientan alrededor de una mesa ypasan su vida cenando y pensando. Cada filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filósofo sólo puede tomarlos que están a su izquierda y derecha. Si cualquier filósofo coge un tenedor y el otro está ocupado, se quedará esperando, con el tenedor en la mano, hasta que pueda coger el otro tenedor, paraluego empezar a comer.
Si dos filósofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condición de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sincomer.
Si todos los filósofos cogen el tenedor que está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lohará porque todos se encuentran en la misma situación (esperando que alguno deje sus tenedores). Entonces los filósofos se morirán de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock.El problema consiste en encontrar un algoritmo que permita que los filósofos nunca se mueran de hambre.
SOLUCION SINCRONIZADA
Clase Filosofo
public classFilosofo extends Thread {
private int id;
private Controlador controlador;
private int nComidas;
public Filosofo(int id,Controlador c) {
this.id=id;
controlador=c;
nComidas = 0;
}//el filosofo pasa un tiempo pensando
public void pensando(){
System.out.println("Filosofo "+id+" pensando");
try {
Thread.sleep((int)(Math.random()*400));
} catch (Exception e) {...
Regístrate para leer el documento completo.