Evento Docente Universida del Mar

Clase HiloPorTurnos

/*ESTA CLASE HACE LA SIMULACION CON SU RESPECTIVO TIEMPO DE RETARDO
*UNICAMENTE PARA EL ALGORITMO POR TURNOS*/
import java.awt.Color;
import javax.swing.*;
public class HiloPorTurnos extends Thread {
int retardo;
int valorNew;
int limite=1;
int numeroProceso[];
int red,green,blue;
private int Quantum;
String nombre;
String Titulo;
JButton p1;
Simulador sim;
int tiempo;
int valores [];
private int RealTRafaga[];
/*CONSTRCUTOR. SE RECIBEN LOS TIEMPOS DE RAGAFA, NUMEROS O NOMBRES DE LOS PROCESOS,EL QUANTUM
* Y UN VECTOR ADICIONAL CON EL VERDADERO TIEMPO DE RAGAFA DE CADA PROCESO*/
public HiloPorTurnos(int []valores1,int [] NumeroProceso,String Title,int Quantum,int []RealTRafaga1){
this.valores=valores1;
this.Titulo=Title;
this.numeroProceso=NumeroProceso;
this.RealTRafaga=RealTRafaga1;
this.Quantum=Quantum;
sim=new Simulador();
sim.setExtendedState(SimuladorPORTURNOS.MAXIMIZED_BOTH);
tiempo = 0;
}/*FINCONSTRUCTOR*/
/*FUNCION RUN. SE ENCARGA DE EJECUTAR LA SIMULACION CON SU RESPECTIVO
* TIEMPO DE RETARDO, DESDE AQUI SE LLAMAN A LOS METODOS DE LA CLASE
* SimuladorPORTURNOS, QUE HACEN EL MOVIMIENTO DE LOS PROCESOS*/
public void run(){
while (limite<=numeroProceso.length) {
red=(int)(Math.random()*256);
green=(int)(Math.random()*256);
blue=(int)(Math.random()*256);
try {
sim.setTitle(" Simulación del algoritmo "+Titulo);
sim.Nuevo_Listo(red,green,blue);
sim.Listo_Cola(red,green,blue);
Thread.sleep(300);
tiempo = tiempo + 300;
limite++;
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
/*Ejecutando los procesos*/
limite=0;
while(true){
try{
sim.setTitle(" Simulación del algoritmo "+Titulo);
if (numeroProceso[limite]!=0)
sim.Listo_Ejecucion(numeroProceso[limite]);

valorNew=RealTRafaga[limite]-Quantum;
RealTRafaga[limite]=valorNew;
if (valorNew<=0 && numeroProceso[limite]!=0){
Thread.sleep(valores[limite]*100);
sim.Ejecucion_Terminado(numeroProceso[limite]);
numeroProceso[limite]=0;
}
else {
if (numeroProceso[limite]!=0){
Thread.sleep(Quantum*100);
Color fondo=sim.Ejecucion_Listo(numeroProceso[limite]);
sim.Listo_Cola1(fondo,limite+1);
}
}
tiempo = tiempo + 300;
} catch (InterruptedException e)
{
e.printStackTrace();
}
if (limite==numeroProceso.length-1)
limite=0;
else
limite++;

}/*Fin del ciclo que ejecuta los procesos*/
}/*Fin funcion RUN*/
}/*FIN DE LA CLASE HiloPorTurnos*/

Tags:

0 comentarios: