1

Мы знаем, что синхронизированное ключевое слово будет работать, когда есть только одна JVM, но если имеется более 1 JVM, то есть существует более одного экземпляра JVM, так что в этом случае мы можем добиться безопасности потоков?Как добиться безопасности потоков в Java между несколькими JVM или контейнерами, если они обращаются к общей памяти?

Учитывая, каждый контейнер создает свой отдельный экземпляр. Предположим, у меня есть 3 отдельных экземпляра jvm, и эти экземпляры делают транзакционный кредит или дебет на той же учетной записи, тогда как я могу сделать эти транзакции сериализованными или атомными или взаимоисключающими. Может ли кто-нибудь сказать лучший подход?

+1

довольно сложный и широкий, поэтому, возможно, вы можете сузить круг вопросов, предоставив конкретный вариант использования –

+1

Это сложная проблема. Ваши варианты зависят от обстоятельств. –

+0

Тот же вопрос относится к нескольким компьютерам. Как сказано выше, слишком сложный и широкий; сузить область действия. – edharned

ответ

0

Поскольку ключевое слово Synchronized и блокировка, предоставляемые JVM, работают только для автономного приложения, вы не можете использовать эти технологии для обеспечения безопасности потоков в кластере.

Общий способ сделать это, или самый простой способ - транзакцией, предоставляемой реляционной базой данных.

Или вы можете использовать другие технологии для реализации распределенного замка, насколько я знаю, вы можете использовать Zookeeper, Redis для достижения этого.