0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: callback, yield, thread, корутины, kotlin, асинхронное программирование, многопоточное программирование, futures/promises, callback-passing, async task, rxjava</p>
1
<p>Теги: callback, yield, thread, корутины, kotlin, асинхронное программирование, многопоточное программирование, futures/promises, callback-passing, async task, rxjava</p>
2
<p><strong>Корутины в Kotlin</strong>- одна из "больших фичей", как было сказано<strong>JetBrains</strong>. Мы все знаем, что блокировка при высоких нагрузках и частые опросы - не самые блестящие идеи, а мир становится всё более и более<strong>push-based</strong>и асинхронным.</p>
2
<p><strong>Корутины в Kotlin</strong>- одна из "больших фичей", как было сказано<strong>JetBrains</strong>. Мы все знаем, что блокировка при высоких нагрузках и частые опросы - не самые блестящие идеи, а мир становится всё более и более<strong>push-based</strong>и асинхронным.</p>
3
<p>Многие языки (начиная с C# в 2012 году) поддерживают<strong>асинхронное программирование</strong>благодаря специальным языковым конструкциям, например, ключевым словам<strong>async/await</strong>. В<strong>Kotlin</strong>эта концепция была обобщена, чтобы библиотеки могли определять версии таких конструкций, а<strong>async</strong>превратился из ключевого слова в простую функцию. Такой дизайн позволяет интегрировать различные асинхронные<strong>API</strong>: futures/promises, callback-passing и т.д. Он также подходит для выражения ленивых генераторов (yield) и других вариантов использования.</p>
3
<p>Многие языки (начиная с C# в 2012 году) поддерживают<strong>асинхронное программирование</strong>благодаря специальным языковым конструкциям, например, ключевым словам<strong>async/await</strong>. В<strong>Kotlin</strong>эта концепция была обобщена, чтобы библиотеки могли определять версии таких конструкций, а<strong>async</strong>превратился из ключевого слова в простую функцию. Такой дизайн позволяет интегрировать различные асинхронные<strong>API</strong>: futures/promises, callback-passing и т.д. Он также подходит для выражения ленивых генераторов (yield) и других вариантов использования.</p>
4
<h2>Какова практическая польза?</h2>
4
<h2>Какова практическая польза?</h2>
5
<p>Итак,<strong>корутины</strong>- новая классная фича в языке<strong>Kotlin</strong>(пусть пока и экспериментальная), которая позволяет писать асинхронный код более естественно - вы сможете писать асинхронный код в своём проекте точно так же, как обычно пишете синхронный.</p>
5
<p>Итак,<strong>корутины</strong>- новая классная фича в языке<strong>Kotlin</strong>(пусть пока и экспериментальная), которая позволяет писать асинхронный код более естественно - вы сможете писать асинхронный код в своём проекте точно так же, как обычно пишете синхронный.</p>
6
<p>Для<strong>асинхронного программирования</strong>вам, возможно, приходилось использовать Async Task’и, Thread’ы (которые могли блокировать, эх...), Callback’и или даже RxJava. Использование callback’ов могло вогнать в так называемый "Ад callback’ов" - привет всем JS-программистам, которые это читают. А в<strong>RxJava</strong>я заметил довольно сложную кривую обучения, которую нужно покорить, чтобы понять, как использовать комбинаторы для соединения нескольких асинхронных вызовов.</p>
6
<p>Для<strong>асинхронного программирования</strong>вам, возможно, приходилось использовать Async Task’и, Thread’ы (которые могли блокировать, эх...), Callback’и или даже RxJava. Использование callback’ов могло вогнать в так называемый "Ад callback’ов" - привет всем JS-программистам, которые это читают. А в<strong>RxJava</strong>я заметил довольно сложную кривую обучения, которую нужно покорить, чтобы понять, как использовать комбинаторы для соединения нескольких асинхронных вызовов.</p>
7
<p>В документации<strong>Kotlin</strong>сказано, что<strong>корутины</strong>- легковесная альтернатива потоков. Они предлагают способ избежать блокировки потока и заменить его более дешевой и контролируемой операцией.</p>
7
<p>В документации<strong>Kotlin</strong>сказано, что<strong>корутины</strong>- легковесная альтернатива потоков. Они предлагают способ избежать блокировки потока и заменить его более дешевой и контролируемой операцией.</p>
8
<p>Команда<strong>Kotlin</strong>представила корутины для простой реализации<strong>многопоточного программирования</strong>. Наверняка многие из читателей уже работали с какими-то инструментами многопоточности на базе потоков, например<strong>Concurrency API</strong>в Java. Я много работал с многопоточным кодом в Java и убеждён в развитости API.</p>
8
<p>Команда<strong>Kotlin</strong>представила корутины для простой реализации<strong>многопоточного программирования</strong>. Наверняка многие из читателей уже работали с какими-то инструментами многопоточности на базе потоков, например<strong>Concurrency API</strong>в Java. Я много работал с многопоточным кодом в Java и убеждён в развитости API.</p>
9
<p><strong>Корутины</strong>проще в использовании, но есть несколько правил. Основная идея заключается в том, что корутины - просто блоки кода, которые можно приостанавливать, не блокируя поток. Отличие в том, что блокировка потока не позволяет ему больше ничего делать, в то время как приостановка означает, что он может делать другие вещи, ожидая завершения приостановленного блока.</p>
9
<p><strong>Корутины</strong>проще в использовании, но есть несколько правил. Основная идея заключается в том, что корутины - просто блоки кода, которые можно приостанавливать, не блокируя поток. Отличие в том, что блокировка потока не позволяет ему больше ничего делать, в то время как приостановка означает, что он может делать другие вещи, ожидая завершения приостановленного блока.</p>
10
<p><em><a>Полезная статья</a>на тему</em></p>
10
<p><em><a>Полезная статья</a>на тему</em></p>
11
<p><em>Хотите узнать больше? Задавайте вопросы в комментариях!</em></p>
11
<p><em>Хотите узнать больше? Задавайте вопросы в комментариях!</em></p>
12
12