Salve a tutti,
vorrei far funzionare meglio il mio programmino java. Qualcuno può aiutarmi?
Vi spiego meglio! Riporto brevemente, dapprima una breve descrizione testuale del sorgente, seguita dal problema e dal codice sorgente.

Descrizione: Il codice richiama un programma da command line, il cui compito è quello di effettuare il calcolo di un equilibrio di nash in mixed strategy. Per fare questo calcolo, viene prima creato un file sul filesystem di nome gameRef.nfg, il quale poi viene elaborato tramite il metodo execute, che restituisce l'insieme delle probabilità sotto forma di vettore di double.

Problema: la scrittura del file nrg (generato ad ogni iterazione) è ritardata dal programma che precedentemente l'ha usato. Per evitare che il programma si arresti al verificarsi dell'eccezione, ho dovuto inserire il codice in un while che tenta finché non si verifica il rilascio. È possibile evitare questa attesa? ci sono altre soluzioni? consigli?

Vi ringrazio per l'aiuto.

Codice:

Nel metodo main() il codice d'interesse è il seguente:

main(){

while(...){
...
String command = "cmd /c gambit-simpdiv < ";
String pathFile = "C:\\Programmi\\Gambit\\games\\gameRef.nfg";
printGameNfg(pathFile, ps);
ExternalCommand cmd = new ExternalCommand(command, pathFile);
double[] ne = cmd.execute();
m.computeNashPayOff(ne);
...
}
}

Il codice del metodo printGameNfg(...):
private static void printGameNfg(String pathFile, String ps) {
int i = 100;
while(i<1000){
try{
System.out.println("Durante la creazione di "+pathFile+" si sono verificati
dei problemi");
System.out.println("Ritento!");
PrintStream out = new PrintStream(new FileOutputStream(pathFile));
out.print(ps);
out.flush();
out.close();
break;
}
catch(FileNotFoundException ex){
ex.printStackTrace();
i++;
}
}//end while
}//end method

Mentre il codice per il metodo execute() della classe ExternalCommand è il seguente:
public double[] execute() {
File fpath;
try {
Runtime run= Runtime.getRuntime();
fpath = new File( "C:\\Programmi\\Gambit\\");
Process processo = run.exec(totalCommand , null, fpath);
String line = "";

BufferedReader input = new BufferedReader(
new InputStreamReader(processo.getInputStream())
);

if ((line = input.readLine()) != null) {
ExtractMixedStrategyNE e = new ExtractMixedStrategyNE(line);
return e.extract();
}


} catch (IOException e1) {
e1.printStackTrace();
}
return null;
}