Part 3: Exception Handling, Collections, dan Multithreading

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 threadIni 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:

  1. Buat kalkulator yang menangani input tidak valid (misal: huruf di input angka)
  2. Simulasikan antrian bank dengan PriorityQueue (Collections)
  3. 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! 🚀