Java Kilitlenme Programlı Olarak Nasıl Oluşturulur ve Kilitlenme Nasıl Analiz Edilir

Yayınlanan: 2013-07-03

Crunchify tarafından Java Thread Lock Örneği

Kilitlenme, iki veya daha fazla iş parçacığının sonsuza kadar engellendiği bir programlama durumudur, bu durum en az iki iş parçacığı ve iki veya daha fazla kaynak ile ortaya çıkar.

Burada kilitlenme senaryosuna neden olacak basit bir program yazdım ve sonra nasıl analiz edileceğini göreceğiz.

İşte basit bir Java Örneği:

Çıktı:

Uygulamanız yukarıdaki örnekte olduğu gibi asılıyken, bir thread dökümü alabilir ve kilitlenen konuları görebilirsiniz.

Örneğin, Mac'te, kilitlenmenin nerede olduğunu çok açık hale getiren iş parçacığı dökümünü almak için Ctrl-\ yapabilir veya jstack ve işlem kimliğini kullanabilirsiniz.

Bu örnekte, iş parçacığı dökümü şöyle görünür:

Burada BLOCKED ve WAITING threads => Deadlock durumu fark edildi.. Bir sonraki örnekte, programlı olarak yukarıdaki thread dökümünü oluşturmak için basit Java Programı sağlanacaktır.