Belajar Memakai Keyword Volatile Di Bahasa Aktivitas 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 dipakai untuk menandai suatu variable ,yang disimpan di memori utama. 

Lebih tepatnya ,yang berarti bahwa , setiap kali pembacaan variable yang memakai keyword volatile , akan dibaca di memori utama komputer , bukan dari cache CPU. Serta , setiap kali penulisan variable yang memakai keyword volatile , akan ditulis ke memori utama , dan bukan hanya ke cache CPU. Karena proses ini terjadi di  dalam sistem pada ketika runtime , jadi ketika kita menjalankan programnya ,tidak ada perbedaan secara jelas, pada tampilan output. 
 yang terdapat di bahasa pemrograman java  Belajar Menggunakan Keyword Volatile di Bahasa Program Java
Keyword volatile biasa digunakan  ,ketika sebuah mutable variable (variable yang berubah-ubah nilainya) sanggup diakses oleh beberapa Thread. Kaprikornus jikalau kalian ingin variable sanggup dimodifikasi dari thread lain , kalian harus memakai keyword volatile. Pada artikel berguru java kali ini ,kita akan berguru 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  menciptakan salinan lokal , dari variable yang disimpan ke dalam memori utama, untuk beberapa alasan performa. 
Sebuah sistem mungkin sanggup mempunyai banyak CPU , dan setiap CPU mungkin mempunyai beberapa thread ,yang sedang berjalan. Setiap thread akan menyalin , variable dari memori utama , ke cache CPU. 
Yang menjadi masalahnya  ialah ,  bahwa JVM (Java Virtual Machine) tidak menjamin proses penyalinan variable , dari memori utama ke cache CPU , dan cache CPU ke memori utama. Karena dilema ketidakpastian ini, sebuah thread tidak akan pernah mendapat nilai atau value terbaru yang diperbarui.
Sekarang kita coba pahami dengan sebuah rujukan , bayangkan jikalau terdapat 2 thread , yaitu Thread 1 dan Thread 2 , keduanya memakai objek bersama ,yang mempunyai variable non-volatile( tidak memakai keyword volatile) .
Contoh Code :
 yang terdapat di bahasa pemrograman java  Belajar Menggunakan Keyword Volatile di Bahasa Program Java
Contoh variable non-volatile
Contoh ilustrasinya , akan menyerupai ini :
 yang terdapat di bahasa pemrograman java  Belajar Menggunakan Keyword Volatile di Bahasa Program Java
Contoh gambar ilustrasi 
Thread 1 akan menambah (increment) variable counter , dan Thread 2 membaca variable counter. Masalahnya ialah , sebab variable tidak gampang berubah , sehingga Thread 1 akan memperbarui nilai variable counter , di cache CPU. Oleh sebab 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 memakai keyword volatile , tidak terlihat nilainya di semua thread. Untuk itu ,kita perlu memakai keyword volatile pada variable , biar dilema ini teratasi.
Contoh Code :
 yang terdapat di bahasa pemrograman java  Belajar Menggunakan Keyword Volatile di Bahasa Program 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. Kaprikornus perubahan apa pun yang terjadi pada  variabel volatile dari  satu thread , akan berdampak atau  terlihat ke thread lain,  dan ini ialah salah satu rujukan kekerabatan happens-before terjadi.
Loading...