Ho un'applicazione JavaFX che istanzia diversi oggetti Task.JavaFX - in attesa del completamento dell'operazione
Attualmente la mia implementazione (vedere di seguito) chiama il comportamento runFactory() che esegue il calcolo in un oggetto Task. Parallelamente a questo, nextFunction() viene richiamato. C'è un modo per avere nextFunction() "wait" fino al completamento della precedente Task?
Capisco thread.join() attende fino a quando il thread in esecuzione è completo, ma con le GUI, ci sono ulteriori livelli di complessità dovuti al thread di invio dell'evento. Di fatto, l'aggiunta di thread.join() alla fine del segmento di codice seguente interrompe solo l'interazione dell'interfaccia utente.
Se ci sono suggerimenti su come rendere nextFunction attendere che la sua funzione preventiva, runFactory è completa, sarei molto riconoscente.
Grazie,
// High-level class to run the Knuth-Morris-Pratt algorithm.
public class AlignmentFactory {
public void perform() {
KnuthMorrisPrattFactory factory = new KnuthMorrisPrattFactory();
factory.runFactory(); // nextFunction invoked w/out runFactory finishing.
// Code to run once runFactory() is complete.
nextFunction() // also invokes a Task.
...
}
}
// Implementation of Knuth-Morris-Pratt given a list of words and a sub-string.
public class KnuthMorrisPratt {
public void runFactory() throws InterruptedException {
Thread thread = null;
Task<Void> task = new Task<Void>() {
@Override public Void call() throws InterruptedException {
for (InputSequence seq: getSequences) {
KnuthMorrisPratt kmp = new KnuthMorrisPratt(seq, substring);
kmp.align();
}
return null;
}
};
thread = new Thread(task);
thread.setDaemon(true);
thread.start();
}
Dreen, mi piace la tua logica ... grazie. Ha perfettamente senso. –
Questa soluzione sembra efficace. Detto questo, qual è il vantaggio di questo approccio piuttosto che fare qualcosa come "Platform.runLater (nextFunction())" come ultimo passaggio del thread di fabbrica? – Vultan
Grazie a un milione, setOnFailed() mi ha salvato dopo due giorni di difficoltà – Yahya