Junior — Middle
Jak zaimplementować wielowątkowość do obsługi dużej ilości zadań, na przykład 10 000 zadań?
sobes.tech AI
Odpowiedź od AI
Aby efektywnie przetwarzać dużą ilość zadań (np. 10 000 zadań) w Java, warto użyć puli wątków z java.util.concurrent.
Główne kroki:
- Utwórz
ExecutorServicez ustalonym lub dynamicznym rozmiarem puli wątków. - Wyślij zadania do wykonania za pomocą
submit()lubexecute(). - Poczekaj na zakończenie wszystkich zadań i poprawnie zamknij pulę.
Przykład:
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(() -> {
// Przetwarzanie zadania
System.out.println("Przetwarzanie zadania " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Ten sposób pozwala na efektywne wykorzystanie zasobów CPU i zarządzanie liczbą jednocześnie wykonywanych wątków, unikając tworzenia zbyt wielu wątków, co mogłoby obniżyć wydajność.