Laporan Tugas Sistem Operasi Modul A: Syncronization dalam Java
LAPORAN
TUGAS SISTEM OPERASI MODUL A
Diajukan
Untuk Memenuhi Tugas Sistem Operasi
Dosen
Pengampu
Arie
Budiansyah, ST., M.Eng
Disusun
Oleh:
Arif
Maulana
(2208107010067)
Informatika
Semester 3
FAKULTAS
MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS
SYIAH KUALA
2023
A Syncronization dalam JAVA
Program multi-thread sering kali
menghadapi situasi di mana beberapa thread mencoba mengakses sumber daya yang
sama dan akhirnya memberikan hasil yang salah dan tidak terduga. Sinkronisasi
Java digunakan untuk memastikan dengan beberapa metode sinkronisasi bahwa hanya
satu thread yang dapat mengakses sumber daya pada titik waktu tertentu.
1. Mencetak Huruf dari Dua Thread Berbeda Tanpa Menggunakan Syncronization
Program pada gambar diatas meminta 2 thread mencetak huruf pada waktu yang bersamaan. Thread 1 diminta untuk mencetak huruf dari ‘A’ sampai ‘M’ dan Thread 2 diminta untuk mencatak huruf dari ‘N’ sampai ‘Z’. Output yang dihasilkan adalah huruf ‘A’ hingga huruf ‘Z’ tercetak tidak berurutan sesuai abjad, hal ini terjadi disebebkan oleh beberapa faktor:
·
Concurrency: Dalam
pemrograman bersamaan, seperti penggunaan thread, dua atau lebih tugas dapat
dieksekusi secara bersamaan. Pada kasus diatas, terdapat dua thread yaitu,
MyThread1 dan MyThread2, yang berjalan secara bersamaan.
·
Race Condition: Ketika
dua atau lebih thread bersaing untuk mengakses sumber daya bersama (dalam hal
ini, metode printTable di objek Table), Program dapat mengalami apa yang
disebut "race condition." Race condition terjadi ketika hasil dari
eksekusi program bergantung pada urutan eksekusi yang tidak dapat diprediksi
dari thread-thread tersebut.
·
Interleaving: Karena
thread-thread ini dieksekusi oleh sistem operasi dan prosesor secara bersamaan,
mereka dapat secara interleaved (bergantian) menjalankan instruksi-instruksi
dalam metode printTable. Ini berarti satu thread dapat menjalankan beberapa pernyataan,
kemudian thread lain masuk, menjalankan beberapa pernyataan, dan seterusnya.
·
Ketidakpastian Urutan:
Karena interleaving ini, tidak ada jaminan bahwa satu thread akan menyelesaikan
iterasinya sebelum thread lain memasuki metode. Sebagai contoh, thread pertama
mungkin mencetak karakter ke-1, kemudian thread kedua mencetak karakter ke-2,
dan seterusnya. Tetapi di eksekusi berikutnya, urutannya bisa berubah, dan
thread kedua mungkin mencetak karakter ke-1 sebelum thread pertama mencetak
karakter ke-2.
Singkatnya Ketika kedua thread berjalan bersamaan, mereka dapat bersaing untuk mengakses metode ‘printTable’ di objek ‘Table’. Saat satu thread sedang menjalankan ‘printTable’, yang lain dapat juga masuk dan memulai menjalankan ‘printTable’ pada saat yang sama, dan ini bisa berakibat pada campuran keluaran karakter yang dicetak oleh kedua thread.
2. Mencetak Huruf dari Dua Thread yang Berbeda Menggunakan Syncronization
Output:
Program diatas sama dengan program sebelumnya, dimana Program meminta 2 thread mencetak huruf pada waktu yang bersamaan. Thread 1 diminta untuk mencetak huruf dari ‘A’ sampai ‘M’ dan Thread 2 diminta untuk mencatak huruf dari ‘N’ sampai ‘Z’ namun perbedaannya adalah program kedua menggunakan Syncronization.
Dalam Bahasa pemograman java synchronization
digunakan untuk mengimplementasikan sinkronisasi pada kode yang melibatkan
sumber daya bersama, seperti metode atau blok kode. Ini digunakan untuk
mengendalikan akses bersamaan dari beberapa thread ke sumber daya bersama
sehingga menjaga konsistensi dan mencegah race condition.
seperti dalam contoh diatas, di mana
metode 'printTable' adalah metode synchronized. Ini berarti hanya satu thread
dapat menjalankan metode tersebut pada objek tertentu pada satu waktu. Sehingga
huruf dapat dicetak secara berurutan.
Komentar
Posting Komentar