Сетевой объект, используемый для связи с удаленной службой, должен быть создан один раз в жизненном цикле приложения и использоваться повторно. Он должен быть потокобезопасным, чтобы облегчить многопоточный доступ без каких-либо проблем (например, вмешательства в память, взаимоблокировки, динамической блокировки и т. Д.), Которые могут возникнуть в многопоточной среде.

В коде применяется двойная проверка блокировки и отложенная инициализация. Ведение журнала модернизации настроено на активацию во время сборки отладки. Таймауты подключения, чтения и записи настраиваются.

Реализация Kotlin представлена ​​ниже.

Несмотря на то, что все в порядке, есть загвоздка. Модификатор volatile сломан в Java 1.4 и ранее. Так что давайте сделаем это лучше.

В приведенном выше примере используется шаблон инициализация по требованию держателя. Это безопасно для всех версий Java.

Давайте проверим лучшую версию для Kotlin.

Пожалуйста, хлопните в ладоши, если вам понравился пост. Спасибо за чтение.