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.
Riespiego meglio come funziona la GUI:
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?