- Giriş
- Kitap kime hitap ediyor?
- Kitabın bölümleri
- Konuların kapsamı
- Geliştiriciler İçin Kotlin Serisi
- Kurallar ve Kılavuzlar
- Kod Kuralları
- Sürüm
- Alıştırmalar ve çözümler
- Teşekkürler
- Neden Kotlin Coroutines?
- Basitlik (Simplicity)
- Performans
- İptal Mekanizması (Cancellation)
- Eşzamanlama (Synchronization)
- Test Edilebilirlik (Testability)
- Flow
- Coroutines Çoklu Platform Desteğine Sahiptir
- Kotlin Coroutines ile İlgili En Büyük Problem
- Sonuç
- Sequence Builder (Dizi Üretici)
- Gerçek hayattaki kullanım alanları
- Alıştırma: Faktöriyel Dizisi
- Alıştırma: Asal Sayılar Dizisi
- Askıya Alma (Suspension) Mekanizması Nasıl Çalışır?
- Oyun Metaforu Üzerinden Thread ve Coroutine Karşılaştırması
- Askıya Alınabilen (Suspending) Fonksiyonlar
- İlk Askıya Alma (Suspension) İşlemi
- Devam Nesnesinde (
Continuation) Neler Saklanır?
- Coroutine’i Geciktirme
- Bir Değer ile Devam Etme
- İstisna (Exception) ile Devam Ettirme (Resume)
- Askıya alınan Coroutine’dir , fonksiyon değil
- Özet
- Alıştırma: Geri Çağırma (Callback) Fonksiyon Sarmalayıcıları
- Alıştırma: Devam (Continuation) Saklama
- Coroutine Mekanizmasının İç Yapısı
- Devam Nesnesi Geçişli Programlama (Continuation-Passing Style)
- Çok Basit Bir Fonksiyon
- Durum Bilgisine Sahip Bir Fonksiyon
- Bir Değer ile Devam Ettirilen Fonksiyon
- Çağrı Yığını (Call Stack)
- Farklı Bağlamlarda Askıya Alınan Fonksiyonlar
- Gerçek Kod
- Askıya Alınan Fonksiyonların Performansı
- Özet
- Alıştırma: Bir Devam Nesnesi (Continuation) Neleri Saklar?
- Coroutine’ler: Yerleşik Destek(built-in support) vs Kütüphane(library)
- Eşzamanlı İş Parçacıkları(Coroutines) Nasıl Başlatılır?
- Asenkron Eşzamanlı İş Parçacığı Başlatıcıları
- Engelleyici Eşzamanlı İş Parçacığı Başlatıcıları (Blocking Coroutine Builders)
- Yapısal Eşzamanlılık (Structured Concurrency)
- Coroutine Kapsamı ve Coroutine Başlatıcıları Arasındaki Farklar
- Özet
- Alıştırma:
UserDetailsRepository
- Alıştırma:
BestStudentUseCase
- Alıştırma: CommentService
- Alıştırma: mapAsync
- Genel Bakış
- Coroutine Bağlamı (Coroutine Context)
CoroutineContextArayüzü(interface)
CoroutineContextİçinde Öğe Bulma
- Bağlam (Context) Ekleme
- Boş İşlem Kapsamı (Empty Coroutine Context)
- Öğeleri Çıkartma (Subtracting Elements)
- Kapsamı Katlama (Folding Context)
- Coroutine Bağlamı ve Başlatıcılar
- Askıya Alınabilir Bir Fonksiyonda Bağlama (Context) Erişim
- Coroutine Kapsam Fonksiyonları ve Bağlam Mirası
- Askıya Alınabilir Fonksiyonlarda Bağlamı Değiştirme
- Kendi İşlem Bağlamımızı Oluşturma
- Eşzamanlı İşlemler ve İş Parçacığı Öğeleri
- Özet
- Alıştırma: Bağlam Yayılımını Anlamak
- Alıştırma: CounterContext
- Coroutine Yöneticileri (Dispatchers)
- Varsayılan Coroutine Yöneticisi (Default Dispatcher)
- Varsayılan Dağıtıcıyı (Dispatcher) Sınırlama
- Ana Dağıtıcı (Main Dispatcher)
- Giriş/Çıkıș (GÇ/IO ) Dağıtıcısı
- Özel Sınırlamalı Dağıtıcı
- Sabit İş Parçacığı Havuzuna Sahip Dağıtıcı (Dispatcher)
- Tek İş Parçacığı ile Sınırlı Dağıtıcı (Dispatcher)
- Project Loom’dan Gelen Sanal İş Parçacıklarını Kullanma
- Bağlı Olmayan Dağıtıcı (Unconfined Dispatcher)
- Anında Ana İş Parçacığı Görevlendirmesi (Immediate Main Dispatching)
- Devamlılık (Continuation) Kesici
- Dağıtıcıların farklı görevlerdeki performansı
- Özet
- Alıştırma: DiscNewsRepository
- Alıştırma: Dağıtıcılarla Deneyler
- Dağıtıcıların Performans Testi
- Job ve Coroutine Yaşam Döngüsü
- Job ve Coroutine İlişkileri
- Coroutine Yaşam Döngüsü
- Job’un Tamamlanmasını Bekleme
- Job Fabrika Fonksiyonu
- Coroutineleri Senkronize Etme
- Özet
- İptal Mekanizması(Cancellation)
- Temel İptal Mekanizması
finallyBloğu
- invokeOnCompletion
- Alt Coroutine’lerin İptali
- Coroutine Kapsamında İptal İşlemi
- Sadece Bir Çağrı Daha
- Durdurulamaz Olanı Durdurmak
- CancellationException’in Özel Durumu
- CancellationException Üst Coroutine’e Yayılmaz
- withTimeout
suspendCancellableCoroutine
- Özet
- Alıştırma: İptal Mekanizmasıyla İlgili Hataları Düzeltme
- İstisna Yönetimi
- İstisnalar ve Yapılandırılmış Eşzamanlılık(structured concurrency)
- SupervisorJob
- supervisorScope
- İstisnalar ve await Çağrısı
CoroutineExceptionHandler
- Özet
- Bir coroutine scope (iş kapsamı) oluşturma
- CoroutineScope fabrika fonksiyonu
- Arka plan kapsamı (background scope) oluşturma
- Android’de scope oluşturma
- Özet
- Alıştırma: NotificationSender
- Alıştırma: BaseViewModel
- Değiştirilebilir duruma(mutable state) erişimi eşzamanlama (synchronizing)
- Atomik değerlerin kullanımı (Using atomic values)
- Synchronized bloklar (Synchronized blocks)
- Tek iş parçacığıyla sınırlı bir dispatcher kullanımı
- Mutex
- Semaphore
- Özet
- Alıştırma: CompanyDetailsRepository
- Alıştırma: CancellingRefresher
- Alıştırma: TokenRepository
- Alıştırma: Suspended lazy
- Alıştırma: mapAsync ile eşzamanlılık sınırı (concurrency limit)
- Kotlin Coroutines Testi
- Zaman Bağımlılıklarının Test Edilmesi (Testing time dependencies)
TestCoroutineSchedulerveStandardTestDispatcher
- runTest
- Arka plan scope’u (Background scope)
- İptal (cancellation) ve bağlam aktarımının (context passing) test edilmesi
UnconfinedTestDispatcher
- Mock nesnelerin kullanımı (Using mocks)
- Dispatcher değiştiren fonksiyonların test edilmesi
- Fonksiyon çalışırken gerçekleşen davranışların test edilmesi
- Yeni coroutine başlatan fonksiyonların test edilmesi
- runTest içinde scope gerektiren sınıfların test edilmesi
- Ana dispatcher’ın (Main dispatcher) değiştirilmesi
- Coroutine başlatan Android fonksiyonlarının test edilmesi
- Test dispatcher’ı bir rule ile ayarlamak
- Özet
- Alıştırma: UserDetailsRepository Sınıfını Test Etme
- Alıştırma: mapAsync Fonksiyonunun Test Edilmesi
- Alıştırma: NotificationSender Sınıfını Test Etme
- Alıştırma: Bir ViewModel Sınıfını Test Etme
- Channel
- Kanal Türleri (Channel Types)
- Arabellek Taşması Durumunda (On Buffer Overflow)
- Teslim Edilemeyen Öğeler İçin İşleyici (On Undelivered Element Handler)
- Fan-out (Yayılma Modeli)
- Fan-in (Toplanma Modeli)
- Pipelines (Veri İşleme Hatları)
- Pratik Kullanım (Practical Usage)
- Özet
- Alıştırma: UserRefresher
- Alıştırma: Kafeterya simülasyonu
- Select (Seçim)
- Ertelenmiş (deferred) değerleri seçme
- Channel’lardan Seçim Yapma (Selecting from channels)
- Özet
- Alıştırma: raceOf
- Sıcak (Hot) ve Soğuk (Cold) Veri Kaynakları
- Sıcak ve Soğuk Akışlar
- Sıcak Channel, Soğuk Flow
- Özet
- Flow’a Giriş
- Flow’un Diğer Değer Temsil Yöntemleriyle Karşılaştırılması
- Flow’un Özellikleri
- Flow Terimlendirmesi (Nomenclature)
- Gerçek Hayattaki Kullanım Durumları
- Özet
Flow’u AnlamakFlow’u Anlamak
Flowİşlemenin (Processing) Nasıl Çalıştığı
- Flow Doğası Gereği Eşzamanlıdır (Synchronous)
- Flow ve Paylaşılan Durum (Shared State)
- Sonuç
- Flow Oluşturma (Flow Building)
- Ham Değerlerden Flow Oluşturma (Flow from raw values)
- Dönüştürücüler (Converters)
- Bir Fonksiyonu Flow’a Dönüştürme
- Flow ve Reactive Streams
- Flow Oluşturucular (Flow Builders)
- Flow Oluşturucuyu Anlamak (Understanding flow builder)
- channelFlow
- callbackFlow
- Özet
- Alıştırma: Flow Yardımcıları (Flow utils)
- Alıştırma: Tüm Kullanıcıları Veren Flow (All users flow)
- Alıştırma: distinct
- Flow Yaşam Döngüsü Fonksiyonları (Flow lifecycle functions)
- onEach
- onStart
- onCompletion
- onEmpty
- catch
- Yakalanmamış İstisnalar (Uncaught exceptions)
retry
- flowOn
- launchIn
- Özet
- Alıştırma: TemperatureService
- Alıştırma: NewsViewModel
- Akış (Flow) İşleme
map
filter
takeanddrop
- Koleksiyon İşleme (Collection Processing) Nasıl Çalışır?
merge,zipvecombine
foldvescan
flatMapConcat,flatMapMergeveflatMapLatest
- Değişmeyene Kadar Ayırt Etme (distinctUntilChanged)
bufferveconflate
debounce
sample
- Terminal işlemler (Terminal operations)
- Özet
- Alıştırma: ProductService
- Alıştırma: Flow Kata
- Alıştırma: MessageService
- SharedFlow ve StateFlow
- SharedFlow
shareIn
- StateFlow
stateIn
- Özet
- Alıştırma: ProductService’i Güncelleyin
- Alıştırma: TemperatureService’i Güncelleyin
- Alıştırma: LocationService
- Alıştırma: PriceService
- Alıştırma: stateIn kullanarak NewsViewModel
- Flow Yapılarının Test Edilmesi
- Dönüştürücü (Transformation) Fonksiyonlar
- Sonsuz Flow’ların Test Edilmesi
- Kaç bağlantının açıldığını belirlemek
- ViewModel’ların Test Edilmesi
- Özet
- Alıştırma: Flow Testi
- Yaygın Kullanım Senaryoları
- Veri/Adaptör Katmanı(Data/Adapters Layer)
- Alan Katmanı(Domain Layer)
- Sunum/API/UI katmanı (Presentation/API/UI layer )
- Özet
- Diğer Dillerden Coroutine Kullanımı
- Farklı Platformlarda Thread Kullanımı
- Askıya Alınan(suspending) Fonksiyonları Askıya Alınmayan(non-suspending) Fonksiyonlara Dönüştürmek
- Diğer Dillerden Askıya Alınan (Suspending) Fonksiyonları Çağırmak
- Flow ve Tepkisel-Reaktif Akışlar (Reactive Streams)
- Özet
- Coroutine’lerin Başlatılması ile Askıya Alınan Fonksiyonların Karşılaştırılması
- En İyi Uygulamalar
- Alıştırma çözümleri
Kotlin Coroutines
Tüm Detaylarıyla
Kotlin coroutines, özellikle Android ve backend geliştirmelerinde, JVM dünyasında çığır açmıştır. Bu teknoloji, çoklu iş parçacığını (multithreading) hem verimli hem de güvenilir bir şekilde uygulamayı son derece kolay hale getirir. Yenilikçi tasarımı ve gelişmiş özellikleri, modern yazılım geliştirme ihtiyaçlarına kusursuz bir şekilde uyum sağlar. Bu kitapta, Kotlin coroutine'lerinin nasıl çalıştığını ve kod kalitemizi nasıl daha da yükseltebileceğimizi ayrıntılı bir şekilde ele alacağız.
The authors are letting you choose the price you pay for this book!
Kotlin coroutines, özellikle Android ve backend geliştirmelerinde, JVM dünyasında çığır açmıştır. Bu teknoloji, çoklu iş parçacığını (multithreading) hem verimli hem de güvenilir bir şekilde uygulamayı son derece kolay hale getirir. Yenilikçi tasarımı ve gelişmiş özellikleri, modern yazılım geliştirme ihtiyaçlarına kusursuz bir şekilde uyum sağlar. Bu kitapta, Kotlin coroutine'lerinin nasıl çalıştığını ve kod kalitemizi nasıl daha da yükseltebileceğimizi ayrıntılı bir şekilde ele alacağız.
About
About the Book
Kotlin Coroutines (Türkçe), Kotlin dilinin en güçlü araçlarından biri olan Coroutine yapısını derinlemesine anlamak isteyen geliştiriciler için hazırlanmış kapsamlı bir rehberdir. Bu kitap, Kotlin ile asenkron programlama, yapılandırılmış eşzamanlılık (structured concurrency), CoroutineContext, Flow yapısı ve daha fazlasını adım adım ve örneklerle açıklar.
Orijinal olarak Marcin Moskala tarafından yazılan bu eser, Türkçe çevirisiyle artık daha geniş bir geliştirici kitlesine ulaşmayı hedefliyor. Kitap, hem Android geliştiricilerine hem de backend Kotlin kullanıcısına hitap etmektedir. Kuramsal temellerden başlayarak gerçek hayat senaryolarına kadar uzanan yapısıyla Kotlin Coroutines’i anlamak isteyen herkes için ideal bir kaynaktır.
Price
Pick Your Price...
Minimum price
$19.00
$29.00
You pay
$29.00Authors earn
$23.20Author
About the Authors
Marcin Moskała
Marcin Moskala is an experienced developer and Kotlin trainer. He is the founder of the kt.academy, Kotlin GDE, an official JetBrains partner for teaching Kotlin, and author of the books Effective Kotlin, Kotlin Coroutines, and Android Development with Kotlin.

Episode 254
An Interview with Marcin Moskała
Hasan Tunçay
Hasan Tunçay is a passionate software developer specializing in Android and modern cross-platform projects with Jetpack Compose. Experienced in web development with Spring Boot and Angular, he contributes to open-source projects and occasionally publishes libraries. As the Turkish translator of the Kotlin Coroutines book, he aims to support the ecosystem and share valuable insights.
Contents
Table of Contents
Get the free sample chapters
Click the buttons to get the free sample in PDF or EPUB, or read the sample online here
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them
Write and Publish on Leanpub
You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!
Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.
Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.