Junior — Middle
Ako implementovať viacvláknové spracovanie pre veľké množstvo úloh, napríklad 10 000 úloh?
sobes.tech AI
Odpoveď od AI
Pre efektívne spracovanie veľkého objemu úloh (napríklad 10 000 úloh) v Jave je vhodné použiť vláknový pool z java.util.concurrent.
Hlavné kroky:
- Vytvorte
ExecutorServices pevnou alebo dynamickou veľkosťou poolu. - Pošlite úlohy na vykonanie pomocou
submit()aleboexecute(). - Počkajte na dokončenie všetkých úloh a správne zatvorte pool.
Príklad:
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(() -> {
// Spracovanie úlohy
System.out.println("Spracováva sa úloha " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Tento prístup umožňuje efektívne využívanie CPU zdrojov a riadenie počtu súčasne vykonávaných vlákien, čím sa predchádza tvorbe príliš veľkého počtu vlákien, čo by mohlo znížiť výkon.