Ich habe mit einer Race Condition zu tun, glaube ich, in meiner JAVA GUI.Java anonyme Klassen und Synchronisation und "das"
Ich habe einige Methoden, die eine „anonyme Methode“ innerhalb einer anonymen Klasse wie folgt zu erstellen:
synchronized foo()
{
someMethod(new TimerTask()
{
public synchronized run()
{
//stuff
}
};
}
Frage: Die run-Methode auf dem Objekt Timertask synchronisiert ist oder die Klasse, dass foo in ist?
FRAGE2: Wenn ich die "synchronisierte" in der run() -Deklaration loswerden, und stattdessen eine synchronisierte (das) {} Block innerhalb der run() - Körper hätte, würde "this" auf das TimerTask-Objekt oder verweisen zu dem Objekt, das eine Instanz der Methode ist, die foo() enthält?
Bitte helfen Sie mir hier.
Danke, JBU
Dies ist ein Fehler, der sogar im JCiP-Buch (Java Concurrency In Practice) auftritt. Es ist schade, dass Java in Bezug auf die Synchronisation so schwach geschrieben ist. –