4-modul · 5-dars: Fork/Join · Async · Singleton

Daraja: O'rta

Fork/Join · Async · Singleton. Multithreading va I/O bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Fork/Join · Async · Singleton tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Katta vazifani kichik qismlarga bo'lib (fork), parallel bajarib, natijalarni birlashtiruvchi (join) framework.

Ko'p yadroli protsessorlarni samarali ishlatish — «divide and conquer» vazifalarni parallellashtirish uchun (Java 7).

## Intervyuga tayyorgarlik ### Fork Join Framework nima? Katta vazifani kichik qismlarga bo'lib (fork), parallel bajarib, natijalarni birlashtiruvchi (join) framework.

### Fork Join Framework nima uchun Java-ga qo'shilgan? Ko'p yadroli protsessorlarni samarali ishlatish — «divide and conquer» vazifalarni parallellashtirish uchun (Java 7).

### Fork Join Framework afzalliklari? Work-stealing bilan yadrolarni to'liq band qiladi; katta rekursiv vazifalar uchun samarali.

### Fork Join Framework qaysi queue dan foydalanadi? Work-stealing queue (deque) — bo'sh thread band thread queue sining oxiridan vazifa «o'g'irlaydi».

### Fork Join va Executor Framework o'rtasidagi farq? Executor — mustaqil vazifalar uchun oddiy pool. ForkJoin — bir-biriga bog'liq, bo'linadigan (rekursiv) vazifalar uchun, work-stealing bilan.

### Asynchronous programming nima? Vazifani kutmasdan (bloklamasdan) ishga tushirib, natija tayyor bo'lganda qayta ishlash uslubi.

### CompletableFuture nima? Future ning kengaytmasi — asinxron vazifalarni zanjirlash, birlashtirish va callback qo'shish imkonini beradi (Java 8).

### CompletableFuture nima uchun ishlatiladi? Asinxron amallarni deklarativ zanjirlash, parallel birlashtirish va natijani bloklamasdan qayta ishlash uchun.

### CompletableFuture va Future o'rtasidagi farq? Future — faqat `get()` (bloklovchi), zanjirlash yo'q. CompletableFuture — non-blocking callback, `thenApply`, birlashtirish, exception handling.

### CompletableFuture thenApply() nima uchun ishlatiladi? Natija tayyor bo'lganda unga funksiya qo'llab, yangi natija hosil qilish (transform) uchun.

### CompletableFuture thenCompose() nima uchun ishlatiladi? Natijaga asoslanib boshqa CompletableFuture qaytaruvchi amalni zanjirlash (nested future larni tekislaydi — flatMap kabi).

### Singleton Design Pattern nima? Class dan faqat bitta nusxa (instance) bo'lishini ta'minlaydigan pattern; multithread muhitda double-checked locking yoki enum bilan xavfsiz yoziladi.

## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/4-module.md) [Rasmiy qo‘llanma](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/package-summary.html) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

var result = java.util.concurrent.CompletableFuture
  .supplyAsync(() -> 21).thenApply(n -> n * 2);
System.out.println(result.join()); // 42
// Blocking tashqi I/O uchun alohida bounded executor tanlang.

Keng tarqalgan xatolar

Mashqlar

Teglar: pdp, modul-04, nazariya

Interaktiv ko'rinish (viktorina, izohlar, tarix)