Junior — Middle
Kuidas rakendada mitmetöötlust suure ülesannete hulga, näiteks 10 000 ülesande, töötlemiseks?
sobes.tech AI
Vastus AI-lt
Selleks, et tõhusalt töödelda suurt ülesannete hulka (näiteks 10 000 ülesannet) Java-s, on soovitatav kasutada java.util.concurrent-i thread-pulka.
Peamised sammud:
- Loo
ExecutorServicefikseeritud või dünaamilise suurusega pulk. - Saada ülesanded täitmiseks
submit()võiexecute()abil. - Oota, kuni kõik ülesanded on lõpetatud, ja sulge pult õigesti.
Näide:
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(() -> {
// Ülesande töötlemine
System.out.println("Töötlusel ülesanne " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
See lähenemine võimaldab tõhusalt kasutada CPU ressursse ja hallata samaaegselt täidetavate threadide arvu, vältides liiga paljude threadide loomist, mis võib põhjustada jõudluse langust.