Junior — Middle
Hogyan valósítsuk meg a több szálas feldolgozást egy nagy feladatszám, például 10 000 feladat esetén?
sobes.tech MI
Válasz az MI-től
A nagy mennyiségű feladat (például 10 000 feladat) hatékony feldolgozásához Java-ban ajánlott az java.util.concurrent-ből származó szálmedencét használni.
Fő lépések:
- Hozzon létre egy
ExecutorService-t fix vagy dinamikus mérettel. - Küldje el a feladatokat végrehajtásra
submit()vagyexecute()segítségével. - Várja meg, hogy minden feladat befejeződjön, és zárja le a medencét helyesen.
Példa:
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(() -> {
// Feladat feldolgozása
System.out.println("Feldolgozás alatt: " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Ez a megközelítés hatékonyan kihasználja a CPU erőforrásokat, és kezeli a párhuzamosan futó szálak számát, elkerülve a túl sok szál létrehozását, ami a teljesítmény csökkenéséhez vezethet.