Junior — Middle
Kako implementirati višestruko pokretanje niti za obradu velikog broja zadataka, na primer 10.000 zadataka?
sobes.tech АИ
Одговор од АИ
Za efikasnu obradu velikog obima zadataka (na primer, 10.000 zadataka) u Javi je preporučljivo koristiti pool niti iz java.util.concurrent.
Glavni koraci:
- Kreirajte
ExecutorServicesa fiksnom ili dinamičkom veličinom poola. - Pošaljite zadatke na izvršenje putem
submit()iliexecute(). - Sačekajte da se svi zadaci završe i pravilno zatvorite pool.
Primer:
import java.util.concurrent.*;
public class TaskProcessor {
public static void main(String[] args) throws InterruptedException {
int numberOfTasks = 10000;
int poolSize = Runtime.getRuntime().availableProcessors();
ExecutorService executor = Executors.newFixedThreadPool(poolSize);
for (int i = 0; i < numberOfTasks; i++) {
final int taskId = i;
executor.submit(() -> {
// Obrada zadatka
System.out.println("Obrada zadatka " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Ovaj pristup omogućava efikasno korišćenje CPU resursa i upravljanje brojem istovremeno izvršavanih niti, izbegavajući kreiranje prevelikog broja niti, što može dovesti do smanjenja performansi.