Tengo el siguiente programa que se trata de un simulador de procesos
Tengo que introducir desde el teclado N procesos, estos seran los que conformen los lotes,
la capacidad máxima de un lote es de 5, y si el número de procesos que se introduce
excede esta cantidad, se conformará otro lote.Al terminar un lote se ejecuta.
La información a capturar por cada proceso es:
1)Nombre de Programador
2)Operación(+,-,*,/) y datos a realizar(validar operaciones)
3 Tiempo Máximo Estimado (validar, debe ser mayor a 0)
Los procesos se atenderán en el orden en que se capturaron. En pantalla debe mostrarse lo
siguiente:
a) Procesos en Espera
1) Nombre de programador
2) Tiempo Maximo Estimado
3) Si hay lotes en espera, anotar el número de lotes pendientes.
b) Proceso en Ejecucion
1) Se deberán mostrar todos los datos del proceso (Nombre, Operacion, tiempo max)
2) Tiempo transcurrido de ejecución
3) Tiempo restante por ejecutar.
c) Procesos Terminados
1) Número de Programa
2) Operación y datos
3) Resultado de la operación.
Desde que se inicia la simulacion, se desplegará un reloj global, es decir, un contador
que lleve el tiempo desde el inicio del programa hasta que termine
El programa se pausa una vez que se hayan realizado todas las operaciones.
hasta ahora tengo ya la parte que captura la información de los procesos y los va
almacenando en un arreglo de tipo infoProceso, pero no se bien como tengo que usar hilos
(Threads) para que se vayan ejecutando los procesos, tengo que usar una clase para los lotes???
el codigo es el siguiente:
Código
class infoProceso{ String nombreProgramador; int numeroPrograma,tiempoMaximo,num1,num2,resultado; char operador; } public class ProcesamientoPorLotes { public static int MAX = 5; public static infoProceso[] lote = new infoProceso[50]; { int numProcesos; numProcesos = entradaTeclado.nextInt(); entradaTeclado.close(); capturarInformacion(numProcesos); } public static void capturarInformacion(int numProcesos) { boolean opValido,tiempoValido = true,idRepetido = false; int tiempo,numero,i,j; for(i = numProcesos;i > 0;i--) { for(j = 0;j < MAX;j++) { //ingresar nombre del programador nombre = teclado.nextLine(); lote[j].nombreProgramador = nombre; //ingresar la operación do { operador = teclado.nextLine(); teclado.close(); opValido = validarOperador(operador); }while(!opValido); capturarOperacion(operador,j); //ingresar el máximo tiempo estimado do { tiempo = teclado.nextInt(); teclado.close(); tiempoValido = validarTiempo(tiempo); }while(!tiempoValido); lote[j].tiempoMaximo = tiempo; //ingresar ID do { numero = teclado.nextInt(); teclado.close(); verificarID(numero); }while(idRepetido); } // } } public static boolean verificarID(int numero) { boolean esRepetido = false; return esRepetido; } { boolean esValido; char operador = op.charAt(0); if(operador == '+' || operador == '-' || operador == '*' || operador == '/') esValido = true; else esValido = false; return esValido; } public static boolean validarTiempo(int tiempo) { boolean esValido = true; if(tiempo <= 0) { esValido = false; } return esValido; } char operador = op.charAt(0); int num1,num2; num1 = entrada1.nextInt(); num2 = entrada2.nextInt(); lote[j].num1 = num1; lote[j].num2 = num2; lote[j].operador = operador; switch(operador) { case '+': lote[j].resultado = lote[j].num1+lote[j].num2; break; case '-': lote[j].resultado = lote[j].num1-lote[j].num2; break; case '*': lote[j].resultado = lote[j].num1*lote[j].num2; break; case '/': lote[j].resultado = lote[j].num1/lote[j].num2; break; } entrada1.close(); entrada2.close(); } }
de antemano gracias