Java Language Multithreading di base

Esempio

Se hai molte attività da eseguire e tutte queste attività non dipendono dal risultato di quelle precedenti, puoi utilizzare il Multithreading per il tuo computer per eseguire tutte queste attività contemporaneamente utilizzando più processori, se il tuo computer lo può fare. Questo può rendere più veloce l' esecuzione del tuo programma se hai delle grosse attività indipendenti.

class CountAndPrint implements Runnable {

    private final String name;

    CountAndPrint(String name) {
        this.name = name;
    }

    /** This is what a CountAndPrint will do */
    @Override
    public void run() {
        for (int i = 0; i < 10000; i++) {
            System.out.println(this.name + ": " + i);
        }
    }

    public static void main(String[] args) {
        // Launching 4 parallel threads
        for (int i = 1; i <= 4; i++) {
            // `start` method will call the `run` method 
            // of CountAndPrint in another thread
            new Thread(new CountAndPrint("Instance " + i)).start();
        }

        // Doing some others tasks in the main Thread
        for (int i = 0; i < 10000; i++) {
            System.out.println("Main: " + i);
        }
    }
}

Il codice del metodo di esecuzione delle varie istanze CountAndPrint verrà eseguito in un ordine non prevedibile. Un frammento di un'esecuzione di esempio potrebbe essere simile a questo:

Instance 4: 1
Instance 2: 1
Instance 4: 2
Instance 1: 1
Instance 1: 2
Main: 1
Instance 4: 3
Main: 2
Instance 3: 1
Instance 4: 4
...