Bei großen Projekten mit vielen Threads müssen die Zugriffe auf gemeinsame Objekte geregelt werden. Hierfür werden Teile des Java Codes mit einem synchronized Block versehen. Damit kann garantiert werden, dass nur immer ein Thread diesen Block ausführt. Bei mehreren synchronized Blöcken kann die Übersicht verloren gehen. Es entstehen Deadlocks. Die Suche nach diesen ist nicht einfach.
Aber zum Glück bietet Eclipse hier Hilfe an. Falls ein Programm auf Grund von Deadlocks nicht beendet wird, so kann man in der Debug-Ansicht das Programm pausieren. Über die Optionen kann man zusätzliche Informationen über die Monitore und System Threads anzeigen.
Dadurch werden die Prozesse, die an einem Deadlock beteiligt sind in der List rot dargestellt und es ist erkennbar welche Locks der Thread erhalten hat und auf welche er noch wartet. Im unteren Bild ist gut erkennbar, dass der main Thread bereits drei Ressourcen hat, aber noch auf die Klasse EventDisptacherImpl wartet.
Mit dieser Einstellung ist das Finden von Deadlocks in Eclipse sehr einfach.