Сетевой объект, используемый для связи с удаленной службой, должен быть создан один раз в жизненном цикле приложения и использоваться повторно. Он должен быть потокобезопасным, чтобы облегчить многопоточный доступ без каких-либо проблем (например, вмешательства в память, взаимоблокировки, динамической блокировки и т. Д.), Которые могут возникнуть в многопоточной среде.
В коде применяется двойная проверка блокировки и отложенная инициализация. Ведение журнала модернизации настроено на активацию во время сборки отладки. Таймауты подключения, чтения и записи настраиваются.
Реализация Kotlin представлена ниже.
Несмотря на то, что все в порядке, есть загвоздка. Модификатор volatile сломан в Java 1.4 и ранее. Так что давайте сделаем это лучше.
В приведенном выше примере используется шаблон инициализация по требованию держателя. Это безопасно для всех версий Java.
Давайте проверим лучшую версию для Kotlin.
Пожалуйста, хлопните в ладоши, если вам понравился пост. Спасибо за чтение.