Java Language Multihilo básico


Ejemplo

Si tiene muchas tareas que ejecutar y todas estas tareas no dependen del resultado de las anteriores, puede usar Multithreading para su computadora para realizar todas estas tareas al mismo tiempo con más procesadores si su computadora puede. Esto puede hacer que la ejecución de su programa sea más rápida si tiene algunas grandes tareas independientes.

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);
        }
    }
}

El código del método de ejecución de las distintas instancias de CountAndPrint se ejecutará en un orden no predecible. Un fragmento de una ejecución de muestra podría verse así:

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
...