Belajar Memakai Keyword Synchronized Di Bahasa Aktivitas Java
Wednesday, April 4, 2018
Add Comment
Apa itu Synchronized ? synchronized merupakan salah satu jenis keyword , yang terdapat di bahasa pemrograman java ,yang dimana fungsinya sebagai thread-safe. Dimana pada waktu yang bersamaan , thread yang berbeda-beda , membaca dan menulis pada variable ,objek , dan resource yang sama.
Kita sanggup memakai keyword ini , pada method yang kita deklarasikan dalam suatu class. Berdasarkan dokumentasi resmi oracle (disini) , method yang memakai keyword synchronized , sanggup mencegah gangguan pada thread , dan juga kesalahan konsistensi memori. Pada artikel berguru java kali ini ,kita akan mencoba berguru mengenal pola penggunaan keyword synchronized , di bahasa pemrograman java .Selengkapnya berikut mari kita simak lebih lanjut :
1. Pertama buka IntelliJ IDEA ,atau Software IDE lain yang kalian gunakan , di Komputer atau Laptop kalian.
2. Kalian sanggup perhatikan pola code ,beserta penjelasanya di bawah :
Pada pola code kegiatan di atas ,kita akan mencoba memakai keyword synchronized, pada method .increment() , yang didalamnya kita mendeklarasikan variable count dengan increment.
Selanjutnya , kita menciptakan method mulaiKerja() , yang di dalamnya kita menginstansi objek t1 dan t2 , dari class Thread.
Di dalam method main kita instansi objek app , kemudian kita memanggil method mulaiKerja().
Jika satu thread mendapatkanya , maka intrinsic lock yang menjalankan method increement() , dan jikalau thread kedua pada dikala yang sama , mencoba memanggil method increement() , maka thread kedua hanya sanggup menunggu.
Thread kedua sementara akan membisu menunggu , hingga thread pertama melepaskan intrinsic lock dengan method finishing ,yaitu method .join().
2. Kalian sanggup perhatikan pola code ,beserta penjelasanya di bawah :
Contoh Code :
Penjelasan :
Lalu kita memakai anonymous class , dari objek Runnable, yang akan mengoverride method run(). Di dalam method tersebut , kita memakai looping for , untuk memperlihatkan nilai pada variable count , di dalam method .increment() .
Kemudian , untuk mulai mengeksekusi kedua objek thread tersebut , kita memakai method .start()
Pada baris code berikutnya ,untuk mengatur alur thread, kita memakai method .join(), yang akan menunggu thread , hingga finish atau akibat dihukum , gres kemudian thread berikutnya , akan mulai berjalan. Disini kita juga wajib memakai block try catch exception.
Setelah itu ,kita tampilkan output hasilnya.
Seperti yang kalian lihat output hasil di atas , ketika kita memakai keyword synchronized di method .increment() , ketika kita menjalankan kegiatan beberapa kali , kesudahannya akan konsisten menampilkan nilai variable count = 2000.
Berbeda ,jika kita tidak memakai synchronized method .increment() , hasilnya tidak akan konsisten menampilkan nilai variable count = 2000 , sehabis kita menjalankan kegiatan beberapa kali.
Konsep lock di java :
Berdasarkan dokumentasi oracle (disini) , sebelum memanggil method .increement(), satu thread harus mempunyai intrinsic lock , yang menjadi problem ialah , hanya satu thread yang sanggup memperoleh intrinsic lock , pada dikala yang bersamaaan.
Thread kedua sementara akan membisu menunggu , hingga thread pertama melepaskan intrinsic lock dengan method finishing ,yaitu method .join().
Kaprikornus setiap objek mempunyai satu instrinsic lock , dan hanya satu thread yang sanggup memperolehnya pada waktu tertentu.
Serta method yang ditandai dengan keyword synchronized , yaitu method .increement(), hanya sanggup dipanggil , ketika satu thread memperoleh instrinsic lock.
Untuk itulah , kita sanggup memecahkan problem tersebut , yaitu tidak konsistennya nilai yang ditampilkan di variable count.
Contoh ilustrasinya , menyerupai pada gambar di bawah :
Contoh gambaran proses kerja instrinsik lock dan keyword synchronized (source) |
Contoh gambaran monitor java (source) |
Point :
Metode synchronized digunakan untuk mengunci objek , pada setiap resource yang digunakan bersama.
Ketika sebuah thread memanggil metode dengan keyword synchronized, secara otomatis memperoleh kunci untuk objek itu , dan melepaskannya ketika thread menuntaskan tugasnya.
Ini merupakan salah satu pola hubungan happen-before , yang akan memastikan bahwa perubahan apa pun yang dilakukan oleh satu thread , akan terlihat oleh thread lain
0 Response to "Belajar Memakai Keyword Synchronized Di Bahasa Aktivitas Java"
Post a Comment
Blog ini merupakan Blog Dofollow, karena beberapa alasan tertentu, sobat bisa mencari backlink di blog ini dengan syarat :
1. Tidak mengandung SARA
2. Komentar SPAM dan JUNK akan dihapus
3. Tidak diperbolehkan menyertakan link aktif
4. Berkomentar dengan format (Name/URL)
NB: Jika ingin menuliskan kode pada komentar harap gunakan Tool untuk mengkonversi kode tersebut agar kode bisa muncul dan jelas atau gunakan tool dibawah "Konversi Kode di Sini!".
Klik subscribe by email agar Anda segera tahu balasan komentar Anda