1

Wir wissen, dass synchronisiertes Schlüsselwort funktionieren würde, wenn es nur eine JVM gibt, aber wenn es mehr als 1 JVM gibt, was bedeutet, dass es mehr als 1 Instanz von JVM gibt. Wie können wir also Thread-Sicherheit erreichen?Wie erreichen Sie Thread-Sicherheit in Java zwischen mehreren JVM oder Containern, wenn sie auf gemeinsam genutzten Speicher zugreifen?

Gegeben, erstellt jeder Container seine eigene separate Instanz. Angenommen, ich habe 3 separate jvm-Instanzen, und diese Instanzen führen ein Transaktionsguthaben oder eine Lastschrift für dasselbe Konto aus. Wie kann ich dann diese Transaktionen serialisiert oder atomar machen oder sich gegenseitig ausschließen? Kann jemand den besten Ansatz sagen?

+1

es ist ziemlich komplex und breit, so könnten Sie vielleicht den Umfang Ihrer Frage eingrenzen, indem Sie einen konkreten Anwendungsfall –

+1

vorschlagen Dies ist ein schweres Problem. Ihre Möglichkeiten hängen von den Umständen ab. –

+0

Die gleiche Frage gilt für mehrere Computer. Wie oben gesagt, zu komplex und breit; verengen den Umfang. – edharned

Antwort

0

Da das Synchronized-Schlüsselwort und die von JVM bereitgestellte Sperre nur für eigenständige Anwendungen funktionieren, können Sie diese Technologien nicht verwenden, um Threads im Cluster sicher zu halten.

Der allgemeine Weg dazu oder der einfachste Weg ist die Transaktion, die von der relationalen Datenbank zur Verfügung gestellt wird.

Oder Sie können andere Technologien verwenden, um die verteilte Sperre zu implementieren, soweit ich weiß, dass Sie Zookeeper, Redis verwenden können, um das zu erreichen.

Verwandte Themen