Riespiego meglio come funziona la GUI:Originariamente inviato da andbin
Bisognerebbe vedere meglio il codice (puoi postarlo?).
Stai forse tenendo impegnato il EDT per molto tempo con del tuo codice? Sarebbe sbagliato appunto.
Ho 2 pulsanti e 2 pannelli.
Quando premo il pulsante X,
Creo l'oggetto X (implementa Observable)
avvia oggettoX.algoritmoX ( è un Thread appena creato ),
poi gli associa un Observer, che è il pannello grafico.
Fine codice pulsante.
Non credo di imepegnare l'EDT, perchè se contemporaneamente
stampo sul terminale l'output
a fine calcolo algoritmo e
a Fine pressione pulsante
il risultato è:
MinIntraJButton-END
ALGORITMO-MININTRA COMPLETATO
ALGORITMO-MAXINTER COMPLETATO
MaxInterJButton-END
ALGORITMO-MAXINTER COMPLETATO
Quindi ad una pressione del pulsante X, finisce prima il l'algoritmo X del codice del pulsante X, nel altro caso finisce prima l'agorimo Y del codice del pulsante Y.
Nota importante:
questo "blocco del primo pulsante" che premo, si verifica solo se gli dò in pasto una grande mole di dati,
non c'è nessun blocco del pulsante se i dati da elaborare sono di una quantità medio-bassa.
(programma avviato con l'opzione -xmm1024m)
Se però "simulo" l'intasamento di uno solo dei due algoritmi, mettendolo in Sleep(8000), e premo il suo pulsante per primo, IL PULSANTE NON SI BLOCCA, quindi i thread sono realmente indipenti, e posso subito premere il secondo pulsante, passati gli 8 secondi di sleep, viene eseguito anche il codice del primo algoritmo
E.... se ogniuno dei due pulsanti fosse un thread?