📄 buffer.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package examen;import java.util.Random;/** * * @author ANGEL */public class buffer { int tam; cola obj[]; cola en_uso; Random r; buffer(int tam){ int i; boolean valor; this.tam = tam; obj = new cola[tam]; r = new Random(); valor = r.nextBoolean(); for(i = 0;i<tam;i++){ obj[i] = new cola(valor,!valor,i); valor = invertir_bool(valor); } } synchronized void meter_buffer(String valor[],int tam,int id){ int i; en_uso = buscar_escritor(); for(i=0;i<tam;i++){ if(en_uso != null){ en_uso.meter(valor[i]); } } System.out.println("EL HILO "+id+" metio "+tam+" valores"); //recorrercolas(); valvula(); } synchronized void sacar_buffer(int tam, int quien){ en_uso = buscar_lector(); String dato; int i; for(i=0;i<tam;i++){ if(en_uso.l.size() >0){ dato = en_uso.sacar(); System.out.println("EL HILO"+quien+"SACO EL DATO: <<"+dato+ ">> de la cola "+en_uso.id); }else System.out.println("EL HILO "+quien+" INTENTO SACAR UN DATOS DE LA COLA "+en_uso.id+" PERO ESTA VACIA"); } } void valvula(){ // System.out.println("Antes de valvular"); // desplegar_funciones(); en_uso.invertir(); int i = 0; if(hay_lector()==false ){ for(i=0;i<this.tam;i++){ if(en_uso != obj[i]){ obj[i].invertir(); break; } } }else if(hay_escritor()==false){ for(i=0;i<this.tam;i++){ if(en_uso != obj[i]){ obj[i].invertir(); break; } } } // System.out.println("despues de valvular"); // this.desplegar_funciones(); } cola buscar_escritor(){ int i,j; cola regreso = null ; for(i=0;i<tam;i++){ if(obj[i].escritura){ regreso = obj[i]; } } return regreso; } cola buscar_lector(){ int i,j; cola regreso = null ; for(i=0;i<tam;i++){ if(obj[i].lectura){ regreso = obj[i]; } } return regreso; } boolean hay_lector(){ cola valor; valor = buscar_lector(); if(valor != null){ return true; }else{ return false; } } boolean hay_escritor(){ cola valor; valor = buscar_escritor(); if(valor != null){ return true; }else{ return false; } } boolean invertir_bool(boolean valor){ return !valor; } void desplegar_funciones(){ int i; for(i=0;i<this.tam;i++){ System.out.print(obj[i].tipo()); // obj[i].tipo(); } System.out.println(); } synchronized void recorrercolas(){ int i; for(i=0;i<this.tam;i++){ this.obj[i].recorrer(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -