Pero, no entiendo cómo iniciar estos número n de hilos comportándose como concepto de múltiples subprocesos. Quiero que se ejecuten en paralelo.
Por supuesto que puede crear una matriz de hilos utilizando un bucle:
Thread[] threads = new Thread[NUM_JOBS_TO_CREATE];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(new Runnable() {
public void run() {
// some code to run in parallel
// this could also be another class that implements Runnable
}
});
threads[i].start();
}
Esto hará que los hilos se ejecuten en segundo plano en paralelo. Luego puede unirse a ellos más tarde para esperar a que todos los completen antes de continuar.
// wait for the threads running in the background to finish
for (Thread thread : threads) {
thread.join();
}
Pero en lugar de gestionar los hilos usted mismo, yo recomendaría usar la orden interna Java Executors
. Hacen todo esto porque son más fáciles de administrar. Una de las ventajas de este método es que separa las tareas de los hilos que las ejecutan. Puede comenzar, por ejemplo, 10 hilos para ejecutar 1000 y 1000 de tareas en paralelo.
He aquí algunos ejemplos de ExecutorService
código:
// create a pool of threads, 10 max jobs will execute in parallel
ExecutorService threadPool = Executors.newFixedThreadPool(10);
// submit jobs to be executing by the pool
for (int i = 0; i < NUM_JOBS_TO_CREATE; i++) {
threadPool.submit(new Runnable() {
public void run() {
// some code to run in parallel
// this could also be another class that implements Runnable
}
});
}
// once you've submitted your last job to the service it should be shut down
threadPool.shutdown();
// wait for the threads to finish if necessary
threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
Para obtener más información, consulte la Java tutorial on the thread executors.
Asegúrese de aceptar mi respuesta si fue útil. – Gray