Deadlock terjadi bila dua atau lebih thread
masing–masing menunggu satu sama lainnya melepaskan kunci. Bahasa pemrograman Java menggunakan monitor untuk
synchronized
thread.
Setiap objek dikaitkan dengan sebuah monitor, yang juga dapat disebut sebagai
monitor objek. Jika thread memanggil metode synchronized pada objek,
objek terkunci. Thread lain memanggil metode synchronized pada
obyek yang sama akan memblokir sampai kunci
dilepaskan. Selain built-in mendukung synchronized, paket java.util.concurrent.locks yang diperkenalkan
di J2SE 5.0 menyediakan kerangka kerja untuk mengunci dan menunggu suatu
kondisi. Deadlock dapat melibatkan monitor objek serta kunci java.util.concurrent.
Biasanya, Deadlock menyebabkan aplikasi atau bagian dari aplikasi
menjadi tidak responsif. Misalnya, jika
sebuah thread bertanggung jawab untuk graphical user interface (GUI) update Buntu/ Deadlocked, aplikasi GUI membeku dan tidak merespon
aksi pengguna.
Looping thread juga dapat menyebabkan
aplikasi untuk Menggantung/Hang
.Bila
satu atau lebih thread yang mengeksekusi dalam loop tak terbatas, yang mungkin loop
mengkonsumsi semua siklus CPU yang tersedia dan menyebabkan seluruh aplikasi
menjadi tidak responsif.
Cara Mengatasinya.
Java SE 6 menyediakan dua cara yang sangat mudah untuk mengetahui
apakah telah terjadi deadlock dalam suatu aplikasi dan juga meningkatkan
fasilitas deteksi deadlock untuk mendukung kunci java.util.concurrent. Baik JConsole dan perintah jstack dapat menemukan deadlock
yang melibatkan monitor objek - yaitu, kunci
yang diperoleh dengan menggunakan kata kunci synchronized- atau java.util.concurrent
ownable synchronizers.
Gambar 1 menunjukkan bahwa ada dua kebuntuan dalam aplikasi
Deadlock, danDeadlock 2 tab menunjukkan tiga thread buntu yang diblokir pada
monitor objek.Setiap tab kebuntuan menampilkan daftar thread yang terlibat
dalam kebuntuan, mengidentifikasi kunci thread yang diblokir, dan menunjukkan
yang benang memilikikunci itu.
![]() |
Gambar 1: JConsole
mendeteksi dua kebuntuan dan memberikan rincian.
|
Tidak ada komentar:
Posting Komentar