Skip to content

Commit 554d0bd

Browse files
Copilotbrunoborges
andauthored
Add Russian translations for concurrency patterns
Translate all 10 concurrency pattern YAML files from German source to Russian under translations/content/ru/concurrency/. Files added: - completablefuture-chaining.yaml - concurrent-http-virtual.yaml - executor-try-with-resources.yaml - lock-free-lazy-init.yaml - process-api.yaml - scoped-values.yaml - stable-values.yaml - structured-concurrency.yaml - thread-sleep-duration.yaml - virtual-threads.yaml Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: brunoborges <129743+brunoborges@users.noreply.github.com>
1 parent 71c7237 commit 554d0bd

10 files changed

+193
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
title: Цепочки CompletableFuture
2+
oldApproach: "Блокирующий Future.get()"
3+
modernApproach: CompletableFuture
4+
summary: Объединение асинхронных операций в цепочки без блокировки с помощью CompletableFuture.
5+
explanation: "CompletableFuture позволяет строить неблокирующие асинхронные конвейеры.\
6+
\ Операции объединяются с помощью thenApply, thenCompose, thenAccept. Ошибки\
7+
\ обрабатываются через exceptionally(). Несколько Future можно комбинировать\
8+
\ с allOf/anyOf."
9+
whyModernWins:
10+
- icon: "🔗"
11+
title: Цепочки
12+
desc: Объединение асинхронных шагов в читаемый конвейер.
13+
- icon: "🚫"
14+
title: Без блокировок
15+
desc: Ни один поток не ждёт результатов впустую.
16+
- icon: "🛡️"
17+
title: Обработка ошибок
18+
desc: "exceptionally() и handle() для надёжного восстановления после ошибок."
19+
support:
20+
description: Широко доступно с JDK 8 (март 2014)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Параллельные HTTP-запросы с виртуальными потоками
2+
oldApproach: Thread Pool + URLConnection
3+
modernApproach: Виртуальные потоки + HttpClient
4+
summary: Одновременная загрузка множества URL с помощью виртуальных потоков и HttpClient.
5+
explanation: "Виртуальные потоки позволяют практично создавать по одному потоку на каждый\
6+
\ HTTP-запрос. В сочетании с HttpClient это заменяет сложные асинхронные колбэк-паттерны\
7+
\ простым блокирующим кодом, который хорошо масштабируется."
8+
whyModernWins:
9+
- icon: "♾️"
10+
title: Один поток на запрос
11+
desc: "Без настройки пула — один виртуальный поток на URL."
12+
- icon: "📖"
13+
title: Простой код
14+
desc: Пишите простой блокирующий код.
15+
- icon: ""
16+
title: Высокая пропускная способность
17+
desc: Тысячи одновременных запросов с минимальными ресурсами.
18+
support:
19+
description: Широко доступно с JDK 21 LTS (сент. 2023)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Автоматическое закрытие ExecutorService
2+
oldApproach: Ручное завершение работы
3+
modernApproach: try-with-resources
4+
summary: Использование try-with-resources для автоматического завершения работы исполнителя.
5+
explanation: "Начиная с Java 19, ExecutorService реализует AutoCloseable. Метод\
6+
\ close() вызывает shutdown() и ожидает завершения задач. Больше не нужны ручные\
7+
\ паттерны try/finally для завершения работы."
8+
whyModernWins:
9+
- icon: "🧹"
10+
title: Автоматическая очистка
11+
desc: Завершение работы происходит автоматически при выходе из блока.
12+
- icon: "🛡️"
13+
title: Нет утечек
14+
desc: "Исполнитель всегда завершает работу, даже при исключениях."
15+
- icon: "📖"
16+
title: Знакомый паттерн
17+
desc: "Тот же try-with-resources, что и для файлов, соединений и т.д."
18+
support:
19+
description: Широко доступно с JDK 19 (сент. 2022)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Ленивая инициализация без блокировок
2+
oldApproach: synchronized + volatile
3+
modernApproach: StableValue
4+
summary: Замена двойной проверки блокировки на StableValue для ленивых синглтонов.
5+
explanation: "StableValue инкапсулирует паттерн ленивой инициализации с корректной\
6+
\ потокобезопасностью. JVM может оптимизировать путь чтения после инициализации,\
7+
\ делая его потенциально быстрее, чем volatile-чтения."
8+
whyModernWins:
9+
- icon: "🧹"
10+
title: Нет шаблонного кода
11+
desc: "Никаких volatile, synchronized или двойных проверок на null."
12+
- icon: ""
13+
title: Быстрое чтение
14+
desc: JVM может свернуть значение в константу после инициализации.
15+
- icon: ""
16+
title: Гарантированная корректность
17+
desc: "Никаких тонких ошибок порядка — JVM берёт это на себя."
18+
support:
19+
description: "Preview в JDK 25 (JEP 502, StableValue). Требует --enable-preview."
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Современный API процессов
2+
oldApproach: "Runtime.exec()"
3+
modernApproach: ProcessHandle
4+
summary: Инспектирование и управление процессами ОС с помощью ProcessHandle.
5+
explanation: "ProcessHandle предоставляет PID, информацию о процессе (команда, аргументы,\
6+
\ время запуска, загрузка CPU), отношения родитель-потомок и завершение процесса.\
7+
\ Больше не нужны недокументированные внутренности Process."
8+
whyModernWins:
9+
- icon: "🔍"
10+
title: Полная информация
11+
desc: "Доступ к PID, команде, аргументам, времени запуска, загрузке CPU."
12+
- icon: "🌳"
13+
title: Дерево процессов
14+
desc: "Навигация между родительскими, дочерними и дочерними процессами."
15+
- icon: "📊"
16+
title: Мониторинг
17+
desc: "onExit() возвращает CompletableFuture для асинхронного мониторинга."
18+
support:
19+
description: Широко доступно с JDK 9 (сент. 2017)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Scoped Values
2+
oldApproach: ThreadLocal
3+
modernApproach: ScopedValue
4+
summary: Безопасный обмен данными по стеку вызовов без ловушек ThreadLocal.
5+
explanation: "ScopedValue предоставляет неизменяемый, наследуемый, ограниченный\
6+
\ контекст. В отличие от ThreadLocal, Scoped Values автоматически очищаются,\
7+
\ работают с виртуальными потоками и не могут быть изменены вызываемыми методами."
8+
whyModernWins:
9+
- icon: "🔒"
10+
title: Неизменяемость
11+
desc: "Вызываемые методы могут читать Scoped Value, но не могут его изменить."
12+
- icon: "🧹"
13+
title: Автоматическая очистка
14+
desc: "Нет ручного remove() — значение ограничено блоком."
15+
- icon: ""
16+
title: Совместимость с виртуальными потоками
17+
desc: Эффективно работает с миллионами виртуальных потоков.
18+
support:
19+
description: "Финализировано в JDK 25 LTS (JEP 506, сент. 2025)."
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Stable Values
2+
oldApproach: Двойная проверка блокировки
3+
modernApproach: StableValue
4+
summary: Потокобезопасная ленивая инициализация без volatile или synchronized.
5+
explanation: "StableValue предоставляет лениво инициализируемое неизменяемое значение\
6+
\ со встроенной потокобезопасностью. Никакой двойной проверки блокировки, volatile-полей,\
7+
\ synchronized-блоков. JVM может даже оптимизировать путь чтения после инициализации."
8+
whyModernWins:
9+
- icon: "🧹"
10+
title: Нулевой шаблонный код
11+
desc: "Никаких volatile, synchronized или проверок на null."
12+
- icon: ""
13+
title: Оптимизировано JVM
14+
desc: JVM может свернуть значение после инициализации.
15+
- icon: "🛡️"
16+
title: Гарантировано однократное выполнение
17+
desc: "Supplier выполняется ровно один раз, даже при конкуренции."
18+
support:
19+
description: "Preview в JDK 25 (JEP 502). Требует --enable-preview."
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
title: Структурированный параллелизм
2+
oldApproach: Ручное управление жизненным циклом потоков
3+
modernApproach: StructuredTaskScope
4+
summary: Управление жизненным циклом параллельных задач как единой единицей работы.
5+
explanation: "Структурированный параллелизм рассматривает группу параллельных задач\
6+
\ как единую операцию. Если одна подзадача завершается с ошибкой, остальные\
7+
\ отменяются. Scope гарантирует, что ни один поток не будет потерян, и создаёт\
8+
\ чёткие отношения родитель-потомок."
9+
whyModernWins:
10+
- icon: "🛡️"
11+
title: Нет утечек потоков
12+
desc: Все разветвлённые задачи завершаются до закрытия Scope.
13+
- icon: ""
14+
title: Быстрый сбой
15+
desc: ShutdownOnFailure отменяет дочерние задачи при сбое одной из них.
16+
- icon: "📐"
17+
title: Чёткая структура
18+
desc: Жизненный цикл задач соответствует лексическому Scope в коде.
19+
support:
20+
description: "Preview в JDK 25 (пятое preview, JEP 505). Требует --enable-preview."
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
title: Thread.sleep с Duration
2+
oldApproach: Миллисекунды
3+
modernApproach: Duration
4+
summary: Использование Duration для самодокументирующихся временных значений.
5+
explanation: "Thread.sleep(Duration) делает единицу времени явной. Больше не нужно\
6+
\ гадать, означает ли 5000 миллисекунды или микросекунды. Работает с\
7+
\ Duration.ofSeconds, ofMillis, ofMinutes и т.д."
8+
whyModernWins:
9+
- icon: "📖"
10+
title: Самодокументирующийся
11+
desc: Duration.ofSeconds(5) не вызывает двусмысленности.
12+
- icon: "🛡️"
13+
title: Безопасность единиц
14+
desc: Нет случайной передачи микросекунд вместо миллисекунд.
15+
- icon: "🧩"
16+
title: Компонуемый
17+
desc: "Арифметика Duration: plus(), multipliedBy() и т.д."
18+
support:
19+
description: Широко доступно с JDK 19 (сент. 2022)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
title: Виртуальные потоки
2+
oldApproach: Платформенные потоки
3+
modernApproach: Виртуальные потоки
4+
summary: Создание миллионов лёгких виртуальных потоков вместо тяжёлых потоков ОС.
5+
explanation: "Виртуальные потоки — это лёгкие потоки, управляемые JVM, а не операционной\
6+
\ системой. Можно создавать миллионы таких потоков без настройки пулов потоков.\
7+
\ Они идеально подходят для задач, интенсивно использующих ввод-вывод, таких\
8+
\ как HTTP-вызовы и запросы к базе данных."
9+
whyModernWins:
10+
- icon: ""
11+
title: Лёгкие
12+
desc: "Виртуальные потоки используют КБ памяти, платформенные потоки — МБ."
13+
- icon: "♾️"
14+
title: Масштабируемые
15+
desc: "Создавайте миллионы потоков — настройка пула не требуется."
16+
- icon: "🧹"
17+
title: Простая модель
18+
desc: Пишите блокирующий код, который масштабируется как асинхронный.
19+
support:
20+
description: Широко доступно с JDK 21 LTS (сент. 2023)

0 commit comments

Comments
 (0)