Junior — Middle
შეგიძლიათ დაასახელოთ java.util.concurrent პაკეტში მოცემული ძირითადი primitives და ინსტრუმენტები მრავალმხრივი შესრულების ორგანიზებისთვის?
sobes.tech AI
პასუხი AI-სგან
java.util.concurrent პაკეტში არსებობს რამდენიმე ძირითადი primitive და ინსტრუმენტი მრავალთრაქტული შესრულების ორგანიზებისთვის:
- Executor და ExecutorService — ინტერფეისები თრედების პულის მართვის და ასინქრონული დავალებების შესრულებისთვის.
- Future და CompletableFuture — ასინქრონული გამოთვლების შედეგის მიღებისთვის.
- CountDownLatch — საშუალებას აძლევს ერთ ან რამდენიმე თრედს დაელოდოს, სანამ სხვა თრედებიCertain actions are completed.
- CyclicBarrier — სინქრონიზირებს რამდენიმე თრედს, აიძულებს მათ ერთმანეთს დაელოდონ.
- Semaphore — შეზღუდავს ერთდროულად წვდომის რაოდენობას რესურსზე.
- ReentrantLock — მოწინავე ლოკირების მექანიზმი, რომელიც საშუალებას აძლევს სცადოს და აქვს დროის შეზღუდვა.
- კონკურენტული კოლექციები (მაგ., ConcurrentHashMap, CopyOnWriteArrayList) — თრედ-უსაფრთხო კოლექციები.
- ატომური ცვლადები (AtomicInteger, AtomicLong და სხვა) — ოპერაციები ცვლადებზე, რომლებიც არ საჭიროებს ლოკებს.
ExecutorService-ის გამოყენების მაგალითი:
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
System.out.println("Աշխատանքը կատարվում է առանձին թելում");
});
executor.shutdown();