Skip to content Skip to sidebar Skip to footer

Belajar Menggunakan Keyword Volatile di Bahasa Program Java

Apa itu Volatile ? volatile merupakan salah satu jenis keyword yang terdapat di bahasa pemrograman java ,yang dimana fungsinya untuk mencegah thread , menyembunyikan (caching) nilai pada variable. Keyword ini digunakan untuk menandai suatu variable ,yang disimpan di memori utama. 

Lebih tepatnya ,yang berarti bahwa , setiap kali pembacaan variable yang menggunakan keyword volatile , akan dibaca di memori utama komputer , bukan dari cache CPU. Serta , setiap kali penulisan variable yang menggunakan keyword volatile , akan ditulis ke memori utama , dan bukan hanya ke cache CPU. Karena proses ini terjadi di  dalam sistem pada saat runtime , jadi ketika kita menjalankan programnya ,tidak ada perbedaan secara jelas, pada tampilan output. 


 belajar contoh program penggunaan menggunakan keyword fungsi volatile di bahasa program java

Keyword volatile biasa digunakan  ,ketika sebuah mutable variable (variable yang berubah-ubah nilainya) dapat diakses oleh beberapa Thread. Jadi jika kalian ingin variable dapat dimodifikasi dari thread lain , kalian harus menggunakan keyword volatile. Pada artikel belajar java kali ini ,kita akan belajar mengenal penggunaan keyword volatile ,di bahasa pemrograman java. Selengkapnya berikut mari kita simak lebih lanjut :





Bagaimana volatile di java menjamin visibilitas ?

Dalam sebuah aplikasi multithread , setiap thread akan  membuat salinan lokal , dari variable yang disimpan ke dalam memori utama, untuk beberapa alasan performa. 
Sebuah sistem mungkin bisa memiliki banyak CPU , dan setiap CPU mungkin memiliki beberapa thread ,yang sedang berjalan. Setiap thread akan menyalin , variable dari memori utama , ke cache CPU. 

Yang menjadi masalahnya  adalah ,  bahwa JVM (Java Virtual Machine) tidak menjamin proses penyalinan variable , dari memori utama ke cache CPU , dan cache CPU ke memori utama. Karena masalah ketidakpastian ini, sebuah thread tidak akan pernah mendapatkan nilai atau value terbaru yang diperbarui.

Sekarang kita coba pahami dengan sebuah contoh , bayangkan jika terdapat 2 thread , yaitu Thread 1 dan Thread 2 , keduanya menggunakan objek bersama ,yang memiliki variable non-volatile( tidak menggunakan keyword volatile) .

Contoh Code :

Contoh variable non-volatile yang tidak menggunakan keyword volatile java
Contoh variable non-volatile

Contoh ilustrasinya , akan seperti ini :


Contoh konsep ilustrasi proses kerja thread cpu cache main memori utama komputer java
Contoh gambar ilustrasi 

Thread 1 akan menambah (increment) variable counter , dan Thread 2 membaca variable counter. Masalahnya adalah , karena variable tidak mudah berubah , sehingga Thread 1 akan memperbarui nilai variable counter , di cache CPU. Oleh karena itu , tidak ada jaminan bahwa , ketika nilai terbaru dari variable counter  akan diperbarui , dalam memori utama. Serta Thread 2 ,tidak akan selalu membaca nilai terbaru , yang diperbarui , dari Thread 1.


Sepeti yang kalian lihat pada gambar di atas , variable yang tidak menggunakan keyword volatile , tidak terlihat nilainya di semua thread. Untuk itu ,kita perlu menggunakan keyword volatile pada variable , agar masalah ini teratasi.

Contoh Code :

Contoh variable volatile yang menggunakan keyword volatile java
Contoh variable volatile


Hubungan Happens-Before

Hubungan happens-before , akan memastikan bahwa perubahan apa pun yang dilakukan oleh satu thread  akan terlihat oleh thread lain. Jadi perubahan apa pun yang terjadi pada  variabel volatile dari  satu thread , akan berdampak atau  terlihat ke thread lain,  dan ini adalah salah satu contoh hubungan happens-before terjadi.

Post a Comment for "Belajar Menggunakan Keyword Volatile di Bahasa Program Java"