Junior — Middle
Kaip įgyvendinti daugiagijį apdorojimą dideliam užduočių kiekiui, pavyzdžiui, 10 000 užduočių?
sobes.tech AI
Atsakymas iš AI
Siekiant efektyviai apdoroti didelį užduočių kiekį (pavyzdžiui, 10 000 užduočių) Java kalboje, rekomenduojama naudoti java.util.concurrent išteklių siūlų baseiną.
Pagrindiniai žingsniai:
- Sukurkite
ExecutorServicesu fiksuotu arba dinamišku dydžiu. - Siųskite užduotis vykdymui naudodami
submit()arbaexecute(). - Laukite, kol visos užduotys bus baigtos, ir tinkamai uždarykite baseiną.
Pavyzdys:
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(() -> {
// Užduoties apdorojimas
System.out.println("Apdorojama užduotis " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Šis požiūris leidžia efektyviai naudoti CPU išteklius ir valdyti vienu metu vykdomų gijų skaičių, išvengiant pernelyg didelio gijų skaičiaus kūrimo, kuris gali sumažinti našumą.