Foros del Web » Programación para mayores de 30 ;) » Java »

Productor consumidor con vector o array

Estas en el tema de Productor consumidor con vector o array en el foro de Java en Foros del Web. Hola buenas tardes soy nuevo en este foro, estoy metido en el tema de los hilos en java y estoy desesperado llevo varios dias con ...
  #1 (permalink)  
Antiguo 22/04/2013, 09:39
 
Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Productor consumidor con vector o array

Hola buenas tardes soy nuevo en este foro, estoy metido en el tema de los hilos en java y estoy desesperado llevo varios dias con un ejercicio y se me atraganta y mucho.
Este seria el ejercicio, el manejo de la posicion del vector es lo que mas problema me da nose algo se me escapa agradeceria alguna ayuda gracias.
Productor-consumidor que mediante un hilo productor almacene datos (15 caracteres) en un búfer compartido, de donde los debe recoger un hilo consumidor (consume 15 caracteres). La capacidad del búfer ahora es de 6 caracteres, de manera que el consumidor podrá estar cogiendo caracteres del búfer siempre que éste no esté vacío. El productor sólo podrá poner caracteres en el búfer, cuando esté vacío o haya espacio.
  #2 (permalink)  
Antiguo 22/04/2013, 09:42
 
Fecha de Ingreso: abril-2013
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Productor consumidor con vector o array

El codigo del bufer seria este pero no ago mas que darle vueltas:
public class BuferSincronizado{
private char bufer[]=new char[5];//Crea array de caracteres con las 6 posiciones
private int posBufer = 0;
private int uP = 10;//Ultima posicion
private boolean disponible = false;
// colocar valor en búfer
public synchronized void establecer( char letra ){
//si es asi significa que el proceso lector a consumido el ultimo caracter y nos posicionamos
//en la posicion ocupada por dicho caracter
while(posBufer==6){//Si el bufer esta lleno no escribe mas
try {
wait();
} catch (InterruptedException ex) {}
}

bufer[posBufer] = letra;
posBufer++;

disponible=true;
notify();
}
//obtener valor del bufer
public synchronized char obtener(){

while(!disponible){//Espera mientras no este disponible para leer
try {
wait();
} catch (InterruptedException ex) {}
}
posBufer=posBufer-1;
uP=posBufer;

notify();

return bufer[posBufer];
}

Etiquetas: vector
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:07.