/*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*/
Clase HiloPorTurnos
Publicado por Darwin Sosa Gómez el lunes, septiembre 10, 2007
Suscribirse a:
Enviar comentarios (Atom)

0 comentarios:
Publicar un comentario