Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [java] Thread

  1. #1

    [java] Thread

    perchè se lancio un Thread dalla pressione di un JButton, il pulsante e tutto il Jframe si blocca fin quando non termina il tread??
    avrei bisogno che almeno il pulsante stop rimanga "attivo" in modo che alla pressione il Thread venga interrotto
    ciao
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Molto probabilmente sbagli a lanciare il thread, perchè l'interfaccia grafica si blocca finche l'evento provocato dalla pressione del bottone non è stato gestito, ovvero finchè non ritorna il metodo che gestisce l'evento. Se tutto resta bloccato significa chenon hai creato un nuovo thread ma stai lvorando nel thread dell'interfaccia grafica.

  3. #3
    public void spegni()
    {

    int a = Integer.valueOf(tempo.getText()).intValue();


    Thread t = Thread.currentThread();
    t.setName("Thread principale");
    t.setPriority(10);
    System.out.println("Thread in esecuzione: " + t);
    try {
    for (int n = a; n > 0; n--) {
    System.out.println("" + n);
    t.sleep(1000);
    }

    System.out.println("chiusura di Windows");


    }
    catch (InterruptedException e) {
    System.out.println("Thread interrotto");
    }



    }


    dall'evento del pulsante lancio questo metodo
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    infatti non crei un nuovo thread...t è il current thread, cioè il thread corrente , quello in cui viene eseguito il metodo spegni che percio resta bloccato...

  5. #5
    e come si crea uno nuovo ????
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Puoi fare cosi: ti definisci una tua classe MyThread che estende Thread che definisce il comportamento del tuo thread (ciò lo si fa ridefinendo il metodo run() di un thread). Quindi nel metodo spegni istanzi un nuovo MyThread, passandogli nel costruttore il valore a:

    Codice PHP:
    public void spegni() {
     
        
    int a Integer.valueOf(tempo.getText()).intValue(); 
        
    Thread t = new MyThread(a);
        
    t.start();
    }


    class 
    MyThread extends Thread{
       private 
    int a;

        public 
    MyThread(int a){
             
    this.a;
             
    t.setName("Nuovo thread creato con valore 'a' pari a: " a); 
             
    t.setPriority(10); 
        }

        public 
    void run(){
            
    System.out.println("Thread in esecuzione: " this); 
            try { 
               for (
    int n a0n--) { 
               
    System.out.println("" n); 
               
    sleep(1000); 
           } 
           catch (
    InterruptedException e) { 
               
    System.out.println("Thread interrotto"); 
           }
        }


  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Se poi vuoi avere la possibilità di fermare un thread devi mantenerti un riferimento al thread t che hai creato.

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.