Napalm
09-11-2005, 10:17
Ho un piccolo problema, io ho 2 metodi di prova:
public void transferF(){
String[] currentDir;
try{
while(queue.peek() != null){
currentDir = (String[])queue.getFirst();
System.out.println("Stò trasferendo: " + currentDir[2]);
Thread.sleep(30000);
queue.removeFirst();
System.out.println("Lunghezza queue dopo il trasferimento: " + queue.size());
}
queue = null;
}catch(Exception e){}
}
e
public void addQueue(String from, String to, String dirFrom, String dirTo){
String[] newDir = new String[4];
if(queue.peek() == null){
System.out.println("Arriva la prima dir: " + dirFrom);
newDir[0] = from;
newDir[1] = dirFrom;
newDir[2] = to;
newDir[3] = dirTo;
queue.add(newDir);
System.out.println("Lunghezza queue dopo l'add della prima dir: " + queue.size());
transferF();
}else{
System.out.println("Arriva successiva dir: " + dirFrom);
newDir[0] = from;
newDir[1] = dirFrom;
newDir[2] = to;
newDir[3] = dirTo;
queue.add(newDir);
System.out.println("Lunghezza queue dopo l'add della dir: " + queue.size());
}
}
Ora come vedete il metodo addQueue si occupa di inserire nella LinkedList queue gli oggetti che arrivano. Al primo oggetto che riceve chimerà il metodo transferF che semplicemente aspetta 30 sec toglie l'oggetto in testa dalla queue e così via finchè l'oggetto queue è null. il problema è che quando sono il sleep non riesco ad inserire altri elementi in queue perchè sono fermo... come posso fare per ovviare a questo problema?
Grazie
NapalM
public void transferF(){
String[] currentDir;
try{
while(queue.peek() != null){
currentDir = (String[])queue.getFirst();
System.out.println("Stò trasferendo: " + currentDir[2]);
Thread.sleep(30000);
queue.removeFirst();
System.out.println("Lunghezza queue dopo il trasferimento: " + queue.size());
}
queue = null;
}catch(Exception e){}
}
e
public void addQueue(String from, String to, String dirFrom, String dirTo){
String[] newDir = new String[4];
if(queue.peek() == null){
System.out.println("Arriva la prima dir: " + dirFrom);
newDir[0] = from;
newDir[1] = dirFrom;
newDir[2] = to;
newDir[3] = dirTo;
queue.add(newDir);
System.out.println("Lunghezza queue dopo l'add della prima dir: " + queue.size());
transferF();
}else{
System.out.println("Arriva successiva dir: " + dirFrom);
newDir[0] = from;
newDir[1] = dirFrom;
newDir[2] = to;
newDir[3] = dirTo;
queue.add(newDir);
System.out.println("Lunghezza queue dopo l'add della dir: " + queue.size());
}
}
Ora come vedete il metodo addQueue si occupa di inserire nella LinkedList queue gli oggetti che arrivano. Al primo oggetto che riceve chimerà il metodo transferF che semplicemente aspetta 30 sec toglie l'oggetto in testa dalla queue e così via finchè l'oggetto queue è null. il problema è che quando sono il sleep non riesco ad inserire altri elementi in queue perchè sono fermo... come posso fare per ovviare a questo problema?
Grazie
NapalM