Es ist nicht möglich, in Java so etwas wie gewünscht zu machen. Verschiedene Java-Anwendungen verwenden unterschiedliche JVMs, die sich vollständig in verschiedene "Blackboxes" aufteilen. Sie haben jedoch 2 Optionen:
Ich vereinfachte Java42 Antwort
Der Code in successLockRunnable sperrt alle anderen Prozesse auf demselben Rechner mit dieser Implementierung.
Ich bin mir nicht sicher, was Sie zu tun versuchen, indem ich etwas über JMX offenlege und die separaten Prozesse ein Status-Flag setzen, das dann Ihren Thread programmatisch aus einem Wartezustand heraus belebt. Anstelle von JMX könnten Sie natürlich einen Socket / RMI verwenden.
Ich glaube nicht, dass es dafür in der Java-Plattform native Methoden gibt. Es gibt jedoch mehrere Möglichkeiten, die gleiche Art von Effekt zu erzielen, je nachdem, welche Synchronisierung Sie durchführen möchten. Zusätzlich dazu, dass die Prozesse über Netzwerkverbindungen kommunizieren (direkte Sockets, Multicast mit einer Wahl usw.) oder auf plattformspezifische Aufrufe fallen, können Sie auch eine Dateisperre für eine freigegebene Datei ermitteln (siehe activemq passiver Stand-by mit a shared file system für ein Beispiel) oder eine Datenbank entweder mit einer Auswahl zum Aktualisieren oder einer optimistischen Aktualisierung einer Tabellenzeile verwenden.
Wir verwenden diese Art von Anweisungen, um sicherzustellen, dass nur ein Prozess einen von "myLockKey" codierten Codeblock ausführen kann:
%Vor%Hier verwenden wir diese Klasse:
%Vor%Tags und Links java multithreading windows