Errore chiusura di un thread

di il
5 risposte

Errore chiusura di un thread

Ho un problemino, dopo aver correttamente(così sembra )avviato un thread, esso non mi si chiude più!
public class GestorePulsante implements ActionListener {

	private JButton fine;

	
	public GestorePulsante(JButton fine) {
		this.fine=fine;
	}

	public GestorePulsante() {
		
	}

	
	public void actionPerformed(ActionEvent e) {
		String pulsante = e.getActionCommand();
                Thread processofiglio = null;
		if(pulsante.equals("Inizia")){
		 processofiglio = new Thread(new OraBari());

			this.fine.setEnabled(true);
			processofiglio.start();
		}
		
		if(pulsante.equals("Stop")){
			System.out.println(1);
			processofiglio.stop();
			//this.fine.setEnabled(false);
		}

	}

}
chi è così gentile da dirmi perchè? è come se non trovasse più il thread

5 Risposte

  • Re: Errore chiusura di un thread

    Il metodo stop() della classe Thread è deprecato.
    Per interrompere un Thread si usa il metodo interrupt().
  • Re: Errore chiusura di un thread

    Processofiglio è una variabile locale del actionPerformed. Quando actionPerformed viene invocato per Stop, processofiglio è null perché non è più la stessa variabile che esisteva quando actionPerformed era invocato per Inizia.
  • Re: Errore chiusura di un thread

    Ho cambiato da processofiglio.stop(); a processofiglio.interrupt(); ma il risultato è sempre quello quindi penso che il problema è un altro, cioè quello che dice andbin

    andbin ha scritto:


    processofiglio è una variabile locale del actionPerformed. Quando actionPerformed viene invocato per Stop, processofiglio è null perché non è più la stessa variabile che esisteva quando actionPerformed era invocato per Inizia.
    Quindi come posso risolvere questo problema? Spostare la variabile Thread processofiglio alla classe e quindi farlo diventare attributo della classe GestorePulsante?
  • Re: Errore chiusura di un thread

    Ho modificato così:
    public class GestorePulsante implements ActionListener {
    
    	private JButton fine;
    	private Thread processofiglio ;
    
    	
    	public GestorePulsante(JButton fine) {
    		this.fine=fine;
    		this.processofiglio = null;
    	}
    
    	public GestorePulsante() {
    		
    	}
    
    	
    	//@SuppressWarnings("deprecation")
    	public void actionPerformed(ActionEvent e) {
    		String pulsante = e.getActionCommand();
    
    
    		if(pulsante.equals("Inizia")){
    			processofiglio = new OraBari();
    
    			System.out.println(processofiglio.getName());
    			
    			this.fine.setEnabled(true);
    			processofiglio.start();
    		}
    		
    		if(pulsante.equals("Stop")){
    			processofiglio.interrupt();
    			//this.fine.setEnabled(false);
    		}
    
    	}
    
    }
    spostando Thread processofiglio da variabile locale a attributo della classe, ma poi come assegno l'istanta di OraBari al Thread processofiglio? ho fatto così come vedete sopra ma cmq mi da errore di sintassi. Per caso esiste un metodo?
  • Re: Errore chiusura di un thread

    Crossposting perillitommaso
Devi accedere o registrarti per scrivere nel forum
5 risposte