Modul B
Laporan Tugas Sistem Operasi
MODUL B
Disusun untuk memenuhi
Tugas Sistem Operasi
Oleh:
M.Taris Rizki
2208107010047
JURUSAN INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SYIAH KUALA
DARUSSALAM, BANDA ACEH
2023
Pendahuluan
Pada praktikum ini, kami mengimplementasikan konsep synchronization
dalam bahasa pemrograman Java. Synchronization digunakan untuk mengatur
akses bersama ke sumber daya bersama oleh beberapa thread.
Bahan praktikum yang digunakan dapat ditemukan di JavaTpoint
- Synchronization in Java.
Tujuan Praktikum
Tujuan dari praktikum ini adalah untuk memahami dan mengimplementasikan konsep synchronization dalam bahasa pemrograman Java. Synchronization digunakan untuk mengendalikan akses bersama ke sumber daya bersama oleh beberapa thread agar dapat menjaga integritas data dan mencegah konflik.
Program yang Diujikan
Modul B
- TestSynchronization3.java
- TestSynchronization3.java
Dalam program ini, kita menggunakan dua utas dengan
menggunakan kelas anonim, sehingga membutuhkan sedikit kode.
Pertama, kita memiliki kelas Table yang memiliki
metode printTable yang disinkronkan. Ini berarti hanya satu utas dapat
mengakses metode ini pada satu waktu, menghindari masalah yang mungkin timbul
jika beberapa utas mencoba mengaksesnya secara bersamaan.
Kemudian, kita memiliki kelas TestSynchronization3
yang berisi metode main. Dalam metode ini, kita membuat objek dari kelas
Table dengan menggunakan kata kunci final untuk memastikan bahwa
objek ini tidak dapat diubah setelah inisialisasi.
Selanjutnya, kita membuat dua utas (t1 dan t2)
menggunakan kelas anonim. Dalam masing-masing utas, kita mendefinisikan metode run
yang akan dieksekusi ketika utas tersebut dimulai. Di dalam metode run,
kita memanggil metode printTable dari objek Table yang telah kita
buat sebelumnya.
Penting untuk disadari bahwa penggunaan metode sinkronisasi
di sini membantu mengamankan akses ke metode printTable sehingga tidak
ada bentrok ketika kedua utas mencoba menjalankannya secara bersamaan.
Singkatnya, penggunaan kelas anonim memungkinkan kita
membuat objek utas secara langsung tanpa harus membuat kelas turunan tambahan,
mengurangi jumlah kode yang perlu ditulis.
Program ini juga menggunakan metode sinkronisasi pada objek Table, yang memastikan bahwa hanya satu utas (thread) yang dapat mengakses metode printTable pada satu waktu. Ini membantu menghindari kondisi balapan (race conditions) dan memastikan keluaran yang konsisten ketika beberapa utas berbagi sumber daya.
- TestSynchronizedBlock1.java
- Program Setelah Modifikasi :
Program ini terdiri dari tiga kelas utama yaitu AlphabetTable,
AlphabetThread1, dan AlphabetThread2. Pada kelas AlphabetTable,
ada metode printAlphabets yang mencetak lima huruf alfabet dari 'A'
hingga 'E' dengan jeda waktu 400 milidetik antara setiap cetakan. Dalam metode
ini, terdapat blok synchronized (this) untuk memastikan bahwa hanya satu
thread yang dapat mengakses metode ini pada satu waktu.
Kelas AlphabetThread1 dan AlphabetThread2
masing-masing adalah thread yang memanggil metode printAlphabets dari
objek AlphabetTable. Program utama, TestSynchronizedBlock1,
membuat satu objek AlphabetTable dan dua thread yang menggunakan objek
tersebut. Kedua thread ini dimulai (start()) dan secara bersamaan
mencoba untuk mengakses metode printAlphabets. Dengan adanya blok
sinkronisasi, hanya satu thread yang dapat menjalankan metode tersebut pada
satu waktu.
- Program Sebelum Modifikasi :
Program ini juga mencoba mengilustrasikan sinkronisasi
dengan kelas Table, MyThread1, dan MyThread2. Metodenya
adalah printTable yang mencetak lima kelipatan angka, dengan blok
sinkronisasi yang serupa di dalamnya.
Seperti pada program pertama, program utama TestSynchronizedBlock1 membuat satu objek Table dan dua thread (MyThread1 dan MyThread2) yang menggunakan objek tersebut. Keduanya mencoba menjalankan metode printTable secara bersamaan. Dengan sinkronisasi, hanya satu thread yang dapat menjalankan metode tersebut pada satu waktu.
- TestSynchronizedBlock2.java
Dalam contoh kode kali ini, saya menambahkan sebuah blok
sinkronisasi menggunakan kelas anonim untuk memberikan pemahaman lebih lanjut
tentang bagaimana blok sinkronisasi dapat diimplementasikan dengan menggunakan
kelas anonim dalam Java.
- class Sender memiliki metode SenderMsg yang mensimulasikan pengiriman pesan. Terdapat penundaan untuk meniru tugas yang memakan waktu.
- Class SenderWThreads extends Thread mengextend Thread dan dirancang untuk mengirim pesan menggunakan thread. Terdapat metode run, yang dijalankan saat thread dimulai. Metode ini memanggil metode SenderMsg dari kelas Sender dalam blok yang disinkronkan untuk memastikan hanya satu thread yang mengirim pesan pada satu waktu.
- TestSynchronizedBlock2 (Class main)
- Metode main membuat instan dari kelas Sender dan dua instan dari kelas SenderWThreads.
- Dua thread dimulai (sender1 dan sender2) untuk mengirim pesan secara bersamaan.
- Pada contoh kelas anonim (sender1), terdapat penggunaan blok sinkronisasi untuk memastikan bahwa hanya satu thread yang mengirim pesan pada satu waktu.
Secara keseluruhan, blok sinkronisasi digunakan untuk
memastikan bahwa operasi pengiriman pesan dilakukan secara terkendali dan tidak
saling bersaing antar thread. Pada contoh kelas anonim, blok sinkronisasi
diterapkan secara langsung untuk menunjukkan alternatif penggunaan dalam
mencapai tujuan tersebut.
Laporan ini membahas praktikum Sistem Operasi dengan fokus
pada konsep synchronisation dalam Java. Tujuannya adalah memahami dan
mengimplementasikan synchronisation untuk mengatur akses bersama ke sumber daya
oleh beberapa thread. Tiga program utama yang diuji adalah
TestSynchronization3.java, TestSynchronizedBlock1.java, dan
TestSynchronizedBlock2.java. Masing-masing menunjukkan penggunaan
synchronisation untuk mencegah konflik dan menjaga integritas data, baik dengan
menggunakan kelas anonim maupun blok synchronised. Keseluruhan, laporan ini
memberikan pemahaman praktis tentang penggunaan synchronisation dalam
pemrograman Java.










Komentar
Posting Komentar