Programmazione multithread

di Anonimizzato24241 il
1 risposte
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

  • 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