JavaRush /Kurslar /All lectures for UZ purposes /Executors: bajariladigan obyektlar

Executors: bajariladigan obyektlar

All lectures for UZ purposes
Daraja, Dars
Mavjud

6.1 Bajariladigan obyektlar

Mana biz paketning eng katta qismiga yetib keldik. Bu yerda asinxron vazifalarni ishga tushirish uchun interfeyslar, natijalarni Future va Callable interfeyslari orqali olish va thread pools yaratish uchun xizmatlar va fabrikalar: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool tasvirlanadi.

Yaxshiroq tushunish uchun interfeyslar va klasslarni biroz dekonstruksiya qilamiz.

6.2 Bajariladigan obyektlarning realizatsiyalari

Future<V> — asinxron operatsiyaning natijalarini olish uchun ajoyib interfeys. Bu yerda asosiy metod — bu get metodi bo'lib, u hozirgi ipni (timeout bilan yoki ularsiz) boshqa ipda asinxron operatsiyaning tugashigacha bloklaydi. Shuningdek, operatsiyani bekor qilish va joriy holatini tekshirish uchun qo'shimcha metodlar mavjud. Implemantatsiya sifatida ko'pincha FutureTask klassi ishlatiladi.

RunnableFuture<V> — agar Future Client API uchun interfeys bo'lsa, unda RunnableFuture interfeysi asinxron qismni ishga tushirish uchun ishlatiladi. run() metodining muvaffaqiyatli tugallanishi asinxron operatsiyani yakunlaydi va natijalarni get metodi orqali olishga imkon beradi.

Callable<V> — asinxron operatsiyalar uchun Runnable interfeysining kengaytirilgan analoги. Typlangan qiymatlarni qaytarishga va checked exception'larni tashlashga imkon beradi. Bu interfeysda run() metodi yo'qligiga qaramay, ko'p java.util.concurrent klasslar u bilan bir qatorda Runnable'ni qo'llab-quvvatlaydi.

FutureTask<V> — Future/RunnableFuture interfeysining implemantatsiyasi. Asinxron operatsiya Runnable yoki Callable obyektlar sifatida konstruktorlardan birida qabul qilinadi. FutureTask klassining o'zi worker ipida ishga tushirish uchun mo'ljallangan, masalan, yangi thread'da new Thread(task).start() yoki ThreadPoolExecutor orqali. Asinxron operatsiyaning natijalari get(...) metodi orqali olinadi.

Delayed — kelajakda boshlanishi kerak bo'lgan asinxron vazifalar uchun ishlatiladi, shuningdek DelayQueue'da. Asinxron operatsiyaning boshlanishigacha vaqtni belgilash imkonini beradi.

ScheduledFuture<V> — Future va Delayed interfeyslarini birlashtiruvchi marker interfeysi.

RunnableScheduledFuture<V> — RunnableFuture va ScheduledFuture'ni birlashtiruvchi interfeys. Qo'shimcha ravishda vazifa bir marta bajariladigan yoki ma'lum bir davrlilik bilan ishga tushiriladiganligini belgilash mumkin.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION