Back to Latihan Prak 6 OOP
-
Soal 1: Lini Perakitan Pabrik
-
Deskripsi Masalah: Sebuah pabrik modern menggunakan lini perakitan otomatis untuk membuat sebuah gadget. Gadget tersebut harus melewati 5 stasiun kerja secara berurutan, dari Stasiun 1 hingga Stasiun 5. Setiap stasiun kerja direpresentasikan sebagai thread yang terpisah.
-
Tugas Anda adalah memodifikasi kelas
AssemblyLinedan mengimplementasikan kelasWorkstation. Gunakan mekanismewait()dannotify()untuk memastikan gadget diproses sesuai urutan yang benar (Stasiun 1, lalu 2, lalu 3, dst.). Stasiun kerja tidak boleh bekerja di luar giliran. Seluruh akses dan modifikasi terhadap kondisi gadget (tahap perakitan) harus bersifat thread-safe menggunakansynchronized. -
File Pendukung
- Gadget.java (Tidak perlu diubah)
- AssemblyLine.java
- Workstation.java
-
Black-box Checker: AssemblyLineChecker.java
-
-
Soal 2: Pipa Pemrosesan Data
-
Deskripsi Masalah: Anda sedang membangun sebuah sistem pemrosesan data. Terdapat thread
Produceryang menghasilkan paket data dan meletakkannya ke dalamDataBufferbersama. Terdapat juga threadConsumeryang mengambil paket dariDataBufferuntuk diproses.DataBuffermemiliki kapasitas yang terbatas. -
Tugas Anda adalah mengimplementasikan metode
putdangetdi kelasDataBuffermenggunakanwait()dannotify()untuk memastikan:Producerakan menunggu jika buffer penuh.Consumerakan menunggu jika buffer kosong.- Thread yang menunggu akan dibangunkan dengan benar ketika keadaan buffer berubah.
-
File Pendukung
-
Black-box Checker: PipelineChecker.java
-
-
Soal 3: Koordinator Tugas Paralel
- Deskripsi Masalah:
Anda sedang membangun sebuah sistem yang perlu menjalankan beberapa tugas (misalnya, mengunduh beberapa berkas) secara paralel. Anda memerlukan sebuah
TaskCoordinatoryang memulai semua tugas dalam thread terpisah, lalu menunggu hingga semua tugas tersebut selesai sebelum melanjutkan eksekusi program utama. - Tugas Anda adalah mengimplementasikan logika di dalam kelas
TaskCoordinator. Thread utama yang memanggilstartAndAwaitCompletion()harus berhenti dan menunggu. Anda dapat menggunakanThread.join()pada semua thread worker atau menggunakan mekanismewait/notifydengan sebuah counter untuk melacak tugas yang sudah selesai. - File Pendukung
- TaskCoordinator.java
- Worker.java (Tidak perlu diubah)
- Black-box Checker: CoordinatorChecker.java
- Deskripsi Masalah:
Anda sedang membangun sebuah sistem yang perlu menjalankan beberapa tugas (misalnya, mengunduh beberapa berkas) secara paralel. Anda memerlukan sebuah