Skip to content

M10 · Bab 2± 50 menitDraf AI

Sinkronisasi dan Struktur Data Konkuren

Tujuan belajar

  • Melindungi state bersama dengan synchronized dan ReentrantLock (termasuk tryLock dengan timeout)
  • Mengenali deadlock dan menghindarinya dengan urutan penguncian yang konsisten
  • Memakai AtomicInteger dan LongAdder untuk counter tanpa lock
  • Memakai ConcurrentHashMap (merge, compute, computeIfAbsent) dan CopyOnWriteArrayList dengan tepat
  • Menjadikan immutability strategi utama, dan mengenal CountDownLatch untuk koordinasi thread

Prasyarat: Thread dan Race Condition

Kuis

5 soal · lulus bila minimal 70% benar

1.Dua thread menjalankan map.put(k, map.getOrDefault(k, 0) + 1) pada ConcurrentHashMap yang sama, masing-masing 100.000 kali untuk kunci yang sama. Apa hasil map.get(k) yang paling mungkin?
2.Thread t1 memegang lock akun A lalu menunggu lock akun B, sedangkan t2 memegang lock B lalu menunggu lock A. Apa yang terjadi?
3.Endpoint katalog menghitung jumlah view per produk dengan puluhan ribu increment per detik dari ratusan thread, dan totalnya hanya dibaca sesekali untuk dashboard. Pilihan counter yang paling tepat?
4.Apa output kode ini? List<String> l = new CopyOnWriteArrayList<>(List.of("a", "b")); for (String s : l) { l.add("x"); } System.out.println(l.size());
5.Di code review, kamu menemukan lock.lock(); updateStock(); lock.unlock(); tanpa try/finally. Mengapa ini berbahaya?

Jawab semua soal dulu (0/5)