Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    5

    [Java] - Threads: Perchè c'è attesa?

    Ho realizzato un interfaccia grafica per un programma che premuto un pulsante disegna su una apposita finestra il risultato di uno specifico algorimo.
    Ci sono 2 pulsanti, 2 algoritmi e due pannelli di disegno.

    Ogni algoritmo è un thread,
    Non capisco quindi perchè, se premo entrambi i pulsanti,
    Java mi fà attendere che un algoritmo termini e che venga disegnato il risultato
    prima che si deselezioni il pulsante (che rimane premuto) e si avvii il secondo algoritmo.

    Per la creazione del JFrame ho usato SwingUtilities.invokeLater(runnableObj);

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] - Threads: Perchè c'è attesa?

    Originariamente inviato da dnax86
    Non capisco quindi perchè, se premo entrambi i pulsanti,
    Java mi fà attendere che un algoritmo termini e che venga disegnato il risultato
    prima che si deselezioni il pulsante (che rimane premuto) e si avvii il secondo algoritmo.
    Bisognerebbe vedere meglio il codice (puoi postarlo?).
    Stai forse tenendo impegnato il EDT per molto tempo con del tuo codice? Sarebbe sbagliato appunto.

    Originariamente inviato da dnax86
    Per la creazione del JFrame ho usato SwingUtilities.invokeLater(runnableObj);
    Questo è corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    5

    Re: Re: [Java] - Threads: Perchè c'è attesa?

    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?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.