Halaman

Sabtu, 16 Juni 2012

KASUS DEAD LOCK PADA OS YANG LAIN

Solaris/ Java Platform


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