Laporan Praktikum Sistem Operasi
PENDAHULUAN
Static synchronization
Static synchronization adalah teknik dalam pemrograman multithreading yang digunakan untuk mengamankan akses ke metode statis. Ini memastikan bahwa hanya satu utas yang dapat menjalankan metode statis tertentu pada satu waktu. Dengan static synchronization, kita menghindari kompetisi antara utas-utas yang mencoba mengakses metode statis yang sama secara bersamaan. Hal ini berguna untuk menjaga data dan operasi yang kritis agar tetap konsisten dalam lingkungan multithreading.
Misalkan kita memiliki kelas Counter dengan metode statis increment() yang digunakan untuk meningkatkan nilai variabel statis. Dengan static synchronization, hanya satu utas yang dapat menjalankan increment() pada satu waktu. Ini memastikan bahwa peningkatan variabel statis dilakukan dengan benar dan tidak ada kompetisi antara utas-utas yang mencoba meningkatkannya secara bersamaan. Dengan cara ini, kita menjaga konsistensi data dalam konteks penggunaan metode statis.
Static synchronization menggunakan kelas anonim adalah teknik untuk mengamankan akses ke metode statis dalam lingkungan multithreading. Ini digunakan untuk memastikan bahwa hanya satu utas yang dapat menjalankan metode statis tertentu pada satu waktu.
Dalam pemrograman multithreading, terkadang kita perlu menjaga metode statis agar hanya satu utas yang dapat mengaksesnya pada saat bersamaan. Hal ini penting untuk menghindari konflik dan kesalahan yang mungkin terjadi saat dua atau lebih utas mencoba mengakses metode yang sama secara bersamaan.
Misalkan kita memiliki kelas MathUtil yang memiliki metode statis calculate yang melakukan perhitungan matematika kompleks. Untuk mengamankan akses ke metode ini, kita dapat menggunakan static synchronization dengan kelas anonim. Dengan demikian, hanya satu utas yang dapat menghitung sesuatu menggunakan metode calculate pada satu waktu, sementara utas lain harus menunggu.
Dalam contoh ini, kelas anonim digunakan untuk membuat utas-utas yang dapat mengakses metode statis calculate pada objek MathUtil. Ini memastikan bahwa metode tersebut diakses secara bergantian oleh utas-utas yang berjalan. Dengan pendekatan ini, kita memastikan bahwa perhitungan matematika yang rumit yang dilakukan oleh metode calculate dalam kelas MathUtil dijalankan dengan aman dan benar dalam lingkungan multithreading.
PEMBAHASAN
SOAL
1. Praktikan menulis ulang kode dan memastikan program jalan normal.
2. Mengganti dari mencetak angka menjadi mencetak huruf A, B, C dstnya.
Program 1 TestSynchronization4.java
1. Kode program asli TestSynchronization4.java
Penjelasan:
Kode program ini adalah contoh penggunaan static synchronization dalam Java untuk mengendalikan akses ke metode statis dalam lingkungan multithreading.
Kelas Table:
- Dalam kelas Table, terdapat metode statis printTable(int n). Metode ini memiliki blok synchronized yang menjaga agar hanya satu utas yang dapat menjalankan metode ini pada satu waktu.
- Metode printTable digunakan untuk mencetak tabel perkalian dari angka n hingga n * 10.
- Setelah setiap pencetakan, ada penundaan selama 400 milidetik (0,4 detik) dengan Thread.sleep(400).
Kelas MyThread1, MyThread2, MyThread3, dan MyThread4:
- Keempat kelas ini adalah turunan dari Thread dan masing-masing memiliki metode run() yang akan dieksekusi ketika utas dimulai.
- Setiap kelas MyThread mencoba menjalankan metode statis printTable dari kelas Table dengan argumen yang berbeda (1, 10, 100, dan 1000).
Kelas TestSynchronization4:
- Inilah kelas utama di mana kita membuat empat objek MyThread yang mewakili empat utas yang berbeda.
- Selanjutnya, kita memulai keempat utas ini dengan memanggil start() pada masing-masing objek MyThread.
Ketika program dijalankan, empat utas tersebut akan mencoba menjalankan metode statis printTable pada kelas Table. Namun, karena kita menggunakan static synchronization, hanya satu utas yang akan diizinkan untuk menjalankannya pada satu waktu. Dengan cara ini, kita dapat menjaga konsistensi dalam pencetakan tabel perkalian dan menghindari kompetisi antara utas-utas yang mencoba mengakses metode statis yang sama secara bersamaan.
2. Kode program TestSynchronization4.java dengan output A, B, C
Kode program ini adalah contoh penggunaan static synchronization dalam Java untuk mengendalikan akses ke metode statis dalam lingkungan multithreading.
Kelas Table:
- Dalam kelas Table, terdapat metode statis printTable(int n). Metode ini memiliki blok synchronized yang menjaga agar hanya satu utas yang dapat menjalankan metode ini pada satu waktu.
- Metode printTable digunakan untuk mencetak karakter huruf awal (A, B, C, dst.) dengan menggantikan angka dari n hingga n * 10.
- Setelah setiap pencetakan, ada penundaan selama 400 milidetik (0,4 detik) dengan Thread.sleep(400).
Kelas MyThread1, MyThread2, MyThread3, dan MyThread4:
- Keempat kelas ini adalah turunan dari Thread dan masing-masing memiliki metode run() yang akan dieksekusi ketika utas dimulai.
- Setiap kelas MyThread mencoba menjalankan metode statis printTable dari kelas Table dengan argumen yang berbeda (1, 10, 100, dan 1000).
Kelas TestSynchronization4:
- Inilah kelas utama di mana kita membuat empat objek MyThread yang mewakili empat utas yang berbeda.
- Selanjutnya, kita memulai keempat utas ini dengan memanggil start() pada masing-masing objek MyThread.
Ketika program dijalankan, keempat utas tersebut akan mencoba menjalankan metode statis printTable pada kelas Table. Namun, karena kita menggunakan static synchronization, hanya satu utas yang akan diizinkan untuk menjalankannya pada satu waktu. Dengan cara ini, kita dapat menjaga konsistensi dalam pencetakan karakter huruf dan menghindari kompetisi antara utas-utas yang mencoba mengakses metode statis yang sama secara bersamaan.
Program 2 TestSynchronization5.java
1. Kode program asli TestSynchronization5.java
Kode program ini adalah contoh penggunaan static synchronization dalam Java untuk mengendalikan akses ke metode statis dalam lingkungan multithreading.Kelas Table:
- Dalam kelas Table, terdapat metode statis printTable(int n). Metode ini memiliki blok synchronized yang menjaga agar hanya satu utas yang dapat menjalankan metode ini pada satu waktu.
- Metode printTable digunakan untuk mencetak hasil perkalian dari angka n hingga n * 10.
- Setelah setiap pencetakan, ada penundaan selama 400 milidetik (0,4 detik) dengan Thread.sleep(400).
Kelas TestSynchronization5:
- Inilah kelas utama di mana kita membuat empat objek utas dengan menggunakan kelas anonim.
- Masing-masing objek utas (t1, t2, t3, dan t4) memiliki metode run() yang akan dieksekusi ketika utas dimulai.
- Dalam metode run() masing-masing utas, mereka mencoba menjalankan metode statis printTable dari kelas Table dengan argumen yang berbeda (1, 10, 100, dan 1000).
Ketika program dijalankan, keempat utas tersebut akan mencoba menjalankan metode statis printTable pada kelas Table. Karena kita menggunakan static synchronization, hanya satu utas yang akan diizinkan untuk menjalankannya pada satu waktu. Ini memastikan bahwa hasil perkalian yang dicetak oleh metode printTable dilakukan dengan benar dan tidak ada kompetisi antara utas-utas yang mencoba mengakses metode statis yang sama secara bersamaan.
2. Kode program TestSynchronization5.java dengan output A, B, C
Kode program ini adalah contoh penggunaan static synchronization dalam Java untuk mengendalikan akses ke metode statis dalam lingkungan multithreading.Kelas Test5:
- Dalam kelas Test5, terdapat metode statis printTable(int n). Metode ini memiliki blok synchronized yang menjaga agar hanya satu utas yang dapat menjalankan metode ini pada satu waktu.
- Metode printTable digunakan untuk mencetak karakter huruf awal (A, B, C, dst.) dengan menggantikan angka dari n hingga n * 10.
- Setelah setiap pencetakan, ada penundaan selama 400 milidetik (0,4 detik) dengan Thread.sleep(400).
Kelas TestSynchronization5:
- Inilah kelas utama di mana kita membuat empat objek utas dengan menggunakan kelas anonim.
- Masing-masing objek utas (t1, t2, t3, dan t4) memiliki metode run() yang akan dieksekusi ketika utas dimulai.
- Dalam metode run() masing-masing utas, mereka mencoba menjalankan metode statis printTable dari kelas Test5 dengan argumen yang berbeda (1, 10, 100, dan 1000).
Ketika program dijalankan, keempat utas tersebut akan mencoba menjalankan metode statis printTable pada kelas Test5. Karena kita menggunakan static synchronization, hanya satu utas yang akan diizinkan untuk menjalankannya pada satu waktu. Ini memastikan bahwa karakter huruf yang dicetak oleh metode printTable dilakukan dengan benar dan tidak ada kompetisi antara utas-utas yang mencoba mengakses metode statis yang sama secara bersamaan.

Komentar
Posting Komentar