Programmazione multithread

di il
1 risposte

Programmazione multithread

Ragazzi, sono nuovo alla programmazione multithread, quindi, per capirci qualcosa, ho deciso di mettere giù questo esempio molto semplice:
public class Schedule {
	public static void main(String[] args) throws InterruptedException {
		Thread ciao = new Thread(new Runnable() {
			
			@Override
			public void run() {
				for (int i = 0; i < 50000; i++) {
					System.out.println(i);
				}
				
			}
		});
		Thread fine = new Thread(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("Fine");
				
			}
		});
		ciao.start();
		fine.start();
	}
}
Il codice compila. Stampa i numeri fino a 49999 e si pianta lì, non viene eseguito il secondo thread. Qualcuno potrebbe gentilmente spiegarmi il perchè di ciò? Grazie

1 Risposte

  • Re: Programmazione multithread

    Se si impianta, e' un problema con la tua installazione di Java, perche' dovrebbe funzionare correttamente.

    Invece, l'errore e' quello di NON ATTENDERE la terminazione dei thread.
    Il codice dovrebbe essere qualcosa del genere:
    
    
    public class CheckThread {
        public static void main(String[] args) throws InterruptedException {
            Thread ciao = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    for (int i = 0; i < 50000; i++) {
                        System.out.println(i);
                    }
    
                }
            });
            Thread fine = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    System.out.println("Fine");
    
                }
            });
            ciao.start();
            fine.start();
    
            ciao.join(); // ATTENDE la terminazione di "ciao"
            fine.join();  // ATTENDE la terminazione di "fine"
        }
    }
    
    
Devi accedere o registrarti per scrivere nel forum
1 risposte