Belajar Memakai Keyword Volatile Di Bahasa Jadwal 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 dikala 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) sanggup diakses oleh beberapa Thread. Makara bila 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 :
Baca juga : Belajar Mengenal Proses dan Thread pada Komputer
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 yaitu , bahwa JVM (Java Virtual Machine) tidak menjamin proses penyalinan variable , dari memori utama ke cache CPU , dan cache CPU ke memori utama. Karena duduk kasus ketidakpastian ini, sebuah thread tidak akan pernah mendapat nilai atau value terbaru yang diperbarui.
Sekarang kita coba pahami dengan sebuah pola , bayangkan bila terdapat 2 thread , yaitu Thread 1 dan Thread 2 , keduanya memakai objek bersama ,yang mempunyai variable non-volatile( tidak memakai keyword volatile) .
Contoh Code :
Contoh variable non-volatile |
Contoh ilustrasinya , akan ibarat ini :
Contoh gambar ilustrasi |
Thread 1 akan menambah (increment) variable counter , dan Thread 2 membaca variable counter. Masalahnya yaitu , alasannya yaitu variable tidak gampang berubah , sehingga Thread 1 akan memperbarui nilai variable counter , di cache CPU. Oleh alasannya yaitu 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 , semoga duduk kasus 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. Makara perubahan apa pun yang terjadi pada variabel volatile dari satu thread , akan berdampak atau terlihat ke thread lain, dan ini yaitu salah satu pola hubungan happens-before terjadi.
Belum ada Komentar untuk "Belajar Memakai Keyword Volatile Di Bahasa Jadwal Java"
Posting Komentar