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.
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 :
Baca juga : Belajar Mengenal Proses dan Thread pada Komputer
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 |
Contoh ilustrasinya , akan seperti ini :
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 |
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"
Silakan berkomentar dengan baik ,jangan SPAM di komentar ini . NO BACKLINK /LINK HIDUP