4-modul · 3-dars: Atomics · Thread-safe collections · Immutable

Daraja: O'rta

Atomics · Thread-safe collections · Immutable. Multithreading va I/O bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Atomics · Thread-safe collections · Immutable tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Qulfsiz (lock-free) tarzda atomik (bo'linmas) amallarni ta'minlaydigan class lar (`AtomicInteger`, `AtomicLong`...).

`count++` kabi amallarni thread-safe qilish uchun — lock-siz va tezroq.

## Intervyuga tayyorgarlik ### Atomics nima? Qulfsiz (lock-free) tarzda atomik (bo'linmas) amallarni ta'minlaydigan class lar (`AtomicInteger`, `AtomicLong`...).

### Nima uchun Atomic Classlarni ishlatishimiz kerak? `count++` kabi amallarni thread-safe qilish uchun — lock-siz va tezroq.

### Atomic Operation qanday ishlaydi? CAS (Compare-And-Swap) — apparat (CPU) darajasidagi atomik ko'rsatma orqali qiymatni tekshirib-almashtiradi.

### CAS nima? Qanday ishlaydi? Compare-And-Swap: joriy qiymat kutilgan qiymatga teng bo'lsa, yangisiga almashtiradi; teng bo'lmasa qayta urinadi. Lock-siz sinxronizatsiya asosi.

### Atomic classlar threadni bloklamasdan thread safe qila oladimi? Ha — CAS orqali qulf ishlatmasdan (lock-free) atomiklikni ta'minlaydi.

### Atomic classlarning afzalliklari? Lock-siz, tez, deadlock yo'q; oddiy hisoblagich/flag lar uchun samarali.

### Java-da necha xil yo'l bilan classni thread-safe qilamiz? `synchronized`, `Lock`, atomic class lar, `volatile`, immutable qilish, thread-safe collection lar, `ThreadLocal`.

### Java-da nechta thread-safe collection bor? `Vector`, `Hashtable`, `Collections.synchronizedXxx`, va `java.util.concurrent` (`ConcurrentHashMap`, `CopyOnWriteArrayList`, `BlockingQueue`...).

### ConcurrentHashMap nima? Yuqori samarali thread-safe Map; butun mapni emas, segment/bucket darajasida qulflaydi (yoki CAS), ko'p thread parallel ishlaydi.

### ArrayList-ni thread-safe qila olamizmi? Ha — `Collections.synchronizedList(list)` yoki `CopyOnWriteArrayList` orqali.

### Immutable class nima? Yaratilgach holati o'zgarmaydigan class (masalan `String`, wrapperlar).

### Immutable classni o'zimiz yarata olamizmi? Ha.

### Immutable classni qanday yaratamiz? class ni `final`, field larni `private final` qilish, setter qo'ymaslik, faqat constructor da qiymat berish, mutable field larni defensive copy bilan qaytarish.

### Java-dagi immutable classlarni sanang. `String`, wrapper class lar (`Integer`, `Long`...), `BigInteger`, `BigDecimal`, `LocalDate`/`LocalDateTime` (Time API).

### Immutable classlar thread-safe mi? Ha.

### Immutable class nima uchun thread-safe? Holati o'zgarmagani uchun bir necha thread bir vaqtda o'qisa ham race condition bo'lmaydi — sinxronizatsiya kerak emas.

## 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 counter = new java.util.concurrent.atomic.AtomicInteger();
counter.incrementAndGet();
var cache = new java.util.concurrent.ConcurrentHashMap<String, Integer>();
cache.computeIfAbsent("java", key -> key.length());

Keng tarqalgan xatolar

Mashqlar

Teglar: modul-04, nazariya, pdp

Interaktiv ko'rinish (viktorina, izohlar, tarix)