ZioCrick ha scritto:
Questo invece mi sconcerta. Perché da quando ho iniziato a studiare Java ho realizzato una piccola applicazione, con interfaccia grafica, per la gestione del mio archivio di film, con varie finestre, interazione con un db e attivazione di altre applicazioni per ricerche sul web o per mostrare foto e immagini, ma non ho mica implementato una struttura di multi-threading ...
Mi chiedo allora ... che cosa ho combinato?
Nelle applicazioni Swing tutta la gestione degli eventi e il disegno della interfaccia grafica vengono fatti nel contesto di un unico thread che è convenzionalmente chiamato il Event Dispatch Thread (EDT).
C'è un loop nel framework che "scoda" continuamente dei messaggi di evento e per ciascuno esegue quello che è necessario. Essendo un unico thread, fa solo una cosa per volta: o sta disegnando un componente X o un componente Y o sta invocando un ActionListener o ecc...
Se non hai considerato il multi-threading è sicuramente perché hai fatto query su db e quant'altro nel contesto del EDT.
Nulla di grave in senso assoluto. Ma se alla invocazione di es. un actionPerformed fai una query che impiega 10 secondi, stai tenendo tu "impegnato" il EDT. E quindi il controllo non può tornare subito al framework, che quindi non può fare, disegnare, notificare altro.
Il risultato è che in quel frangente di tempo la tua interfaccia grafica è completamente "congelata", non responsiva. E questo generalmente è un limite abbastanza importante e noioso. E lo si risolve appunto con il multi-threading.