JavaRush
AI Academy
new
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Чому файловий I/O блокує та як це впливає на вибір Dispatchers

    Kotlin SELF
    56 рівень, 0 лекція
    Розбираємо різницю між suspension і блокуванням потоку, чому файлові операції на JVM найчастіше блокувальні та як це безпосередньо впливає на вибір контексту корутин: де використовувати Dispatchers.Default, а де — Dispatchers.IO. На прикладах із withContext, async і блокувальним Thread.sleep показуємо, як «випадковий I/O на Default» може гальмувати CPU‑завдання та як дисципліна «I/O окремо, CPU окремо» спрощує архітектуру.
    Відкрита
  • withContext(Dispatchers.IO) + use {}: правильні межі I/O‑функцій

    Kotlin SELF
    56 рівень, 1 лекція
    Розбираємо, як у Kotlin‑корутині правильно відокремлювати блокувальне файлове введення‑виведення від CPU‑логіки: де ставити withContext( Dispatchers.IO), як безпечно виходити через return@withContext, навіщо потрібен use { ... } для закриття ресурсів і чому «широкий» IO-контекст перетворюється на смітник відповідальності. Наприкінці — практика для утиліт File Organizer і список типових помилок.
    Відкрита
  • Паралельна обробка файлів — async + awaitAll()

    Kotlin SELF
    56 рівень, 2 лекція
    Розбираємо практичний шаблон конкурентної обробки багатьох файлів у Kotlin‑корутинах: чим відрізняються launch і async, як зібрати результати «пакетом» через awaitAll(), чому небезпечно запускати «тисячу завдань одразу», як обмежувати одночасність за допомогою Dispatchers.IO.limitedParallelism(n), де проходить межа між I/O і CPU, і як уписати все це в structured concurrency через coroutineScope.
    Відкрита
  • Скасування в тривалих файлових операціях: chunk‑цикл, isActive, CancellationException

    Kotlin SELF
    56 рівень, 3 лекція
    Розбираємо кооперативне скасування корутин у тривалих файлових операціях: чому блокувальний I/O «не чує» cancel(), навіщо потрібен chunk‑цикл (читання/запис шматками), де ставити точки скасування через isActive і ensureActive(), як правильно працювати з CancellationException (і не «глушити» її в catch), а також як скасовувати завдання ззовні через cancelAndJoin().
    Відкрита
  • Часткові результати та cleanup: temp‑файли, перейменування, прибирання

    Kotlin SELF
    56 рівень, 4 лекція
    Розглянемо практичну стратегію надійної «публікації результату» під час роботи з файлами: спершу писати в чернетку ( .tmp/ .part), потім атомарно (наскільки це можливо) «опублікувати» через renameTo() і в будь-якому разі виконати best‑effort‑прибирання у finally. На прикладах Kotlin і корутин: try / finally, withContext( Dispatchers. IO), хелпер deleteQuietly, безпечний запис звіту та обгортка для копіювання.
    Відкрита
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush