Junior — Middle
Katta hajmdagi vazifalarni, masalan, 10 000 vazifani bajarish uchun ko'p oqimli ishlashni qanday amalga oshirasiz?
sobes.tech AI
AIdan javob
Katta hajmli vazifalarni (masalan, 10 000 ta vazifa) Java'da samarali tarzda ishlash uchun java.util.concurrent kutubxonasidan thread havuzidan foydalanish tavsiya etiladi.
Asosiy bosqichlar:
- Fiksirlangan yoki dinamik o'lchamdagi thread havuzini yaratish.
- Vazifalarni
submit()yokiexecute()yordamida yuborish. - Barcha vazifalar tugashini kutish va havuzni to'g'ri yopish.
Misol:
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(() -> {
// Vazifa ishlash
System.out.println("Vazifa ishlash " + taskId);
// ...
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
}
}
Bu yondashuv CPU resurslaridan samarali foydalanishni ta'minlaydi va bir vaqtning o'zida bajarilayotgan threadlar sonini boshqaradi, bu esa juda ko'p threadlar yaratishning oldini oladi va ishlashni sekinlashtirmaslik uchun muhimdir.