BloquingQueue no recibe mis datos
Publicado por CarlosM (1 intervención) el 08/05/2013 20:49:43
Hola,
Tengo una duda y si alguien me puede dar una pista le estaría muy agradecido.
Resulta que quiero implementar un Productor- Consumidor.
Para ello empleo la clase BloquingQueue y lo que quieroes que me alamcene List<DatoAlmacenar>.
Mi definicion es la siguiente:
BlockingQueue <DatasBolcado> sharedQueue = new SynchronousQueue<DatasBolcado>();
boolean continuar = true;
private String rutaDef = null;
public HiloSecuencialBolcado(){}
public void addData(List<JPacket> lista ){
DatasBolcado data = new DatasBolcado(lista);
encolar(data);
}
private void encolar(DatasBolcado data ) {
sharedQueue.add(data);
}
/**
* Establece la ruta del fichero de la nueva captura y copia la lista que se le pasa como parametro.
*/
public void run() {
while( continuar ) {
try {
if( sharedQueue.size() > 0 ){
volcadoFichero(sharedQueue.take().getLista());
} else {
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Pero cuando hago sharedQueue.add(data); o sharedQueue.put(data);
me aparece vacía. Es decir sharedQueue.size() > 0 siempre es false y no me entra en mi función de volcado
Muchas gracias y cualquier sugerencia es bien recibida.
Tengo una duda y si alguien me puede dar una pista le estaría muy agradecido.
Resulta que quiero implementar un Productor- Consumidor.
Para ello empleo la clase BloquingQueue y lo que quieroes que me alamcene List<DatoAlmacenar>.
Mi definicion es la siguiente:
BlockingQueue <DatasBolcado> sharedQueue = new SynchronousQueue<DatasBolcado>();
boolean continuar = true;
private String rutaDef = null;
public HiloSecuencialBolcado(){}
public void addData(List<JPacket> lista ){
DatasBolcado data = new DatasBolcado(lista);
encolar(data);
}
private void encolar(DatasBolcado data ) {
sharedQueue.add(data);
}
/**
* Establece la ruta del fichero de la nueva captura y copia la lista que se le pasa como parametro.
*/
public void run() {
while( continuar ) {
try {
if( sharedQueue.size() > 0 ){
volcadoFichero(sharedQueue.take().getLista());
} else {
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Pero cuando hago sharedQueue.add(data); o sharedQueue.put(data);
me aparece vacía. Es decir sharedQueue.size() > 0 siempre es false y no me entra en mi función de volcado
Muchas gracias y cualquier sugerencia es bien recibida.
Valora esta pregunta


0