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

                   


    
    Output:







 



















         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

Postingan populer dari blog ini

Laporan Tugas Sistem Operasi Modul D: Deadlock in Java

Laporan Tugas Sistem Operasi Modul C: Static Syncronization