Selamat datang di seri belajar Java bagian ketiga! Jika di Part 2 kita sudah membahas konsep OOP seperti inheritance dan polymorphism, kali ini kita akan menjelajahi tiga fitur penting Java: penanganan error, struktur data koleksi, dan pemrograman paralel. Mari kita tingkatkan kemampuan Java Anda dengan materi yang lebih aplikatif!
1. Mengelola Error dengan Exception Handling
Setiap program pasti menghadapi error. Java menggunakan exception untuk mengelola kesalahan secara elegan. Bayangkan exception seperti alarm yang memberi tahu kita ada masalah sebelum program crash. Berikut cara kerjanya:

- Try-catch: Tangkap exception spesifik dan beri solusi
Contoh:catch (NullPointerException npe)
untuk error objek null - Finally: Eksekusi kode wajib, error atau tidak
Biasanya digunakan untuk menutup file atau koneksi database - Custom Exception: Buat exception sendiri dengan
extends Exception

Pro Tip:
- Gunakan
throws
untuk delegasi penanganan error ke method lainjavaRun

Jangan biarkan catch block kosong! Ini seperti mematikan alarm kebakaran tanpa memadamkan api 🔥
2. Collections Framework: Struktur Data Modern
Java Collections menyediakan cara praktis mengelola grup objek. Bayangkan ini sebagai kotak perkakas untuk manipulasi data. Dua yang paling sering dipakai:
ArrayList (Dinamis seperti array yang bisa bertambah):

Keunggulan:
- Ukuran fleksibel
- Memiliki method praktis seperti
.contains()
untuk cek keberadaan item
HashMap (Penyimpanan key-value seperti kamus):

Contoh penggunaan nyata:
- Menyimpan data user (NIM/NIK sebagai key)
- Cache sederhana untuk hasil perhitungan
Perbandingan Koleksi Lain:
- LinkedList: Efisien untuk operasi tambah/hapus di tengah
- HashSet: Untuk data unik tanpa duplikat
- Stack: Prinsip LIFO (Last-In-First-Out)
3. Multithreading: Eksekusi Paralel
Java memungkinkan eksekusi beberapa proses sekaligus melalui thread. Ini seperti memiliki beberapa pekerja di pabrik yang mengerjakan tugas berbeda secara bersamaan.
Cara 1: Extend Thread
class (cocok untuk simple task)

Cara 2: Implement Runnable
interface (lebih direkomendasikan)

Best Practices:
- Gunakan
synchronized
untuk menghindari race condition

- Manfaatkan
Thread.sleep(1000)
untuk simulasi delay - Hindari deadlock dengan mengatur urutan akses resource
Fakta Menarik:
- Aplikasi Android menggunakan thread utama (main thread) untuk UI
- Proses garbage collection di Java juga berjalan di thread terpisah
Apa Selanjutnya?
Selamat! Anda sekarang menguasai tiga konsep kunci Java tingkat menengah. Untuk menguji pemahaman, coba tantangan ini:
- Buat kalkulator yang menangani input tidak valid (misal: huruf di input angka)
- Simulasikan antrian bank dengan
PriorityQueue
(Collections) - Bangun sistem unduhan multi-file dengan 3 thread paralel
Contoh integrasi konsep:

Di part berikutnya, kita akan eksplor Java I/O untuk baca/tulis file dan Networking untuk komunikasi client-server. Jangan lupa:
- Gunakan
System.out.println("Debug pesan")
untuk lacak error - Baca dokumentasi Java di Oracle Docs
- Eksperimen dengan kode Anda sendiri – error adalah guru terbaik!
Tetap semangat dan sampai jumpa di part 4! 🚀