Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Interrompere evento

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    24

    Interrompere evento

    Salve vorrei porvi un quesito interessante, è possibile interrompere l'esecuzione di codice preceduta da un evento? mi spiego meglio, se ho nella classe che mi implementa MouseListener il metodo:

    public void mousePressed{
    for(int i=0; i<10000;i++);
    }

    Questo metodo eseguito dal thread "AWT-EventQueque" può essere interrotto attraverso un altro evento (magari un altro mousePressed)?
    Qualsiasi cosa vi venga in mente sparatela anche se è una fesseria.

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

    Re: Interrompere evento

    Originariamente inviato da Favozza
    se ho nella classe che mi implementa MouseListener il metodo:

    public void mousePressed{
    for(int i=0; i<10000;i++);
    }

    Questo metodo eseguito dal thread "AWT-EventQueque" può essere interrotto attraverso un altro evento (magari un altro mousePressed)?
    No, perché in quel frangente di tempo stai tenendo tu "impegnato" il EDT (event dispatch thread). Quindi nessun altro evento può essere dispacciato.

    E un obiettivo fondamentale dovrebbe sempre essere quello di non tenere mai impegnato il EDT per troppo tempo, pena il "congelamento" della interfaccia utente.
    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
    Jul 2008
    Messaggi
    24
    e se generassi un nuovo thread in mousepressed che mi esegue una run così funzionerebbe? L'EDT si disimpegnerebbe?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Favozza
    e se generassi un nuovo thread in mousepressed che mi esegue una run così funzionerebbe? L'EDT si disimpegnerebbe?
    Certo, anzi, se hai operazioni "lunghe" da eseguire in risposta ad un evento, è quello che va fatto! Cioè appunto eseguirle in un thread separato.

    Che tu poi vuoi usare direttamente un Thread che istanzi tu o usare invece uno SwingWorker, è da valutare. Purché non tieni impegnato il EDT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    24
    e per interrompere quel thread Specifico? insomma qualcosa simile alla funzione kill del c in cui bisogna specificare il pid del processo.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Favozza
    e per interrompere quel thread Specifico? insomma qualcosa simile alla funzione kill del c in cui bisogna specificare il pid del processo.
    I thread non vanno "killati" di brutto. La gestione della terminazione va fatta in modo "cooperativo", ovvero il codice del thread deve essere stato scritto per poter ricevere notifica (in qualche modo ... e dipende anche da cosa fa il thread) e quindi cooperare alla terminazione.

    Argomentino delicato .... ti consiglio di leggere: Java Thread Primitive Deprecation
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    24
    grazie mille

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.