🎯 Exemples recommandés
Balanced sample collections from various categories for you to explore
Exemples Kotlin
Exemples de code Kotlin essentiels pour le développement Android, backend JVM et les fonctionnalités modernes de Kotlin
💻 Hello World Kotlin kotlin
🟢 simple
⭐
Programme Hello World de base avec syntaxe moderne Kotlin et sécurité des types
⏱️ 10 min
🏷️ kotlin, jvm, null safety
Prerequisites:
Basic programming concepts
// Kotlin Hello World Examples
// 1. Basic Hello World
fun main() {
println("Hello, World!")
}
// 2. Hello World with variable
fun main() {
val message = "Hello, World!"
println(message)
}
// 3. Hello World with function
fun sayHello(): String {
return "Hello, World!"
}
fun main() {
println(sayHello())
}
// 4. Hello World with parameters
fun greet(name: String): String {
return "Hello, \$name!"
}
fun main() {
println(greet("World"))
println(greet("Kotlin"))
}
// 5. Hello World with class
class Greeter(private val message: String = "Hello, World!") {
fun greet() {
println(message)
}
}
fun main() {
val greeter = Greeter()
greeter.greet()
}
// 6. Hello World with user input
fun main() {
print("Enter your name: ")
val name = readLine()
println("Hello, ${name ?: "World"}!")
}
// 7. Hello World multiple times
fun main() {
for (i in 1..5) {
println("Hello, World! $i")
}
}
// 8. Hello World with collection
fun main() {
val greetings = listOf("Hello", "Bonjour", "Hola", "Ciao", "こんにちは")
greetings.forEach { greeting ->
println("\$greeting, World!")
}
}
// 9. Hello World with map
fun main() {
val greetings = mapOf(
"en" to "Hello",
"es" to "Hola",
"fr" to "Bonjour",
"de" to "Hallo",
"ja" to "こんにちは"
)
greetings.forEach { (lang, greeting) ->
println("\$greeting, World! (\$lang)")
}
}
// 10. Hello World with data class
data class HelloResponse(
val message: String,
val timestamp: Long = System.currentTimeMillis(),
val success: Boolean = true
)
fun main() {
val response = HelloResponse("Hello, World!")
println(response)
}
// Basic data types examples
fun main() {
// Kotlin is statically typed with type inference
val integer: Int = 42
val double: Double = 3.14
val float: Float = 3.14f
val long: Long = 42L
val string: String = "Hello, Kotlin!"
val boolean: Boolean = true
val char: Char = 'K'
val array: Array<Int> = arrayOf(1, 2, 3, 4, 5)
val list: List<Int> = listOf(1, 2, 3, 4, 5)
val map: Map<String, Any> = mapOf(
"name" to "John Doe",
"age" to 30,
"email" to "[email protected]"
)
val nullable: String? = null
println("Integer: $integer, Type: ${integer::class.simpleName}")
println("Double: $double, Type: ${double::class.simpleName}")
println("Float: $float, Type: ${float::class.simpleName}")
println("Long: $long, Type: ${long::class.simpleName}")
println("String: $string, Type: ${string::class.simpleName}")
println("Boolean: $boolean, Type: ${boolean::class.simpleName}")
println("Char: $char, Type: ${char::class.simpleName}")
println("Array: ${array.contentToString()}, Type: ${array::class.simpleName}")
println("List: $list, Type: ${list::class.simpleName}")
println("Map: $map, Type: ${map::class.simpleName}")
println("Nullable: ${nullable ?: "null"}, Type: ${nullable?.let { it::class.simpleName } ?: "Null"}")
// Control flow examples
val age = 18
if (age >= 18) {
println("You are an adult")
} else {
println("You are a minor")
}
// When expression (Kotlin's switch)
val grade = 'A'
when (grade) {
'A' -> println("Excellent!")
'B' -> println("Good job!")
'C' -> println("Fair enough")
else -> println("Need improvement")
}
// Loop examples
val fruits = listOf("apple", "banana", "cherry")
for (index, fruit) in fruits.withIndex()) {
println("${index + 1}. I like $fruit")
}
// Range operations
for (i in 1..10) {
println("Number: $i")
}
// Collection operations examples
val numbers = (1..10).toList()
val evenNumbers = numbers.filter { it % 2 == 0 }
val squaredNumbers = numbers.map { it * it }
val sum = numbers.reduce { acc, num -> acc + num }
println("Even numbers: $evenNumbers")
println("Squared numbers: $squaredNumbers")
println("Sum: $sum")
// String methods examples
val text = "Hello, Kotlin Programming!"
println("Uppercase: ${text.uppercase()}")
println("Lowercase: ${text.lowercase()}")
println("Capitalized: ${text.replaceFirstChar { it.uppercase() }}")
println("Length: ${text.length}")
println("Reversed: ${text.reversed()}")
// Null safety examples
val nullableString: String? = "NotNull"
val length = nullableString?.length ?: 0
println("Length: $length")
val definitelyNotNull: String = nullableString!!
println("Not null: $definitelyNotNull")
// Elvis operator
val result = nullableString ?: "Default value"
println("Result: \$result")
// Safe call with let
nullableString?.let {
println("Value exists: $it")
}
// Method chaining with scope functions
val processedText = text
.split(" ")
.filter { it.isNotBlank() }
.map { it.lowercase() }
.joinToString("-")
println("Processed text: \$processedText")
}
💻 Programmation Orientée Objet Kotlin kotlin
🟡 intermediate
⭐⭐⭐⭐
Concepts OOP avancés incluant classes, héritage, interfaces et fonctionnalités spécifiques à Kotlin
⏱️ 35 min
🏷️ kotlin, oop, advanced
Prerequisites:
Basic Kotlin syntax, Object-oriented concepts
// Kotlin Object-Oriented Programming Examples
// 1. Classes and Properties
class Person(
val name: String, // Read-only property
var age: Int, // Mutable property
private var _email: String = "" // Private property with backing field
) {
// Custom getter
var email: String
get() = _email
set(value) {
if (value.contains("@")) {
_email = value
}
}
// Custom getter with derived property
val isAdult: Boolean
get() = age >= 18
// Secondary constructor
constructor(name: String) : this(name, 0)
// Member function
fun introduce(): String {
return "Hi, I'm \$name and I'm \$age years old."
}
// Init block
init {
println("Person \$name created")
}
}
// 2. Data Classes
data class User(
val id: Long,
val username: String,
val email: String,
val isActive: Boolean = true
) {
// Custom component in data class
val displayName: String
get() = username.replaceFirstChar { it.uppercase() }
}
fun demonstrateDataClass() {
val user1 = User(1, "john_doe", "[email protected]")
val user2 = user1.copy(username = "jane_doe", id = 2)
println("User 1: $user1")
println("User 2: $user2")
println("Display names: ${user1.displayName}, ${user2.displayName}")
}
// 3. Sealed Classes and Enums
sealed class Result<out T> {
data class Success<out T>(val data: T) : Result<T>()
data class Error(val exception: Throwable) : Result<Nothing>()
object Loading : Result<Nothing>()
}
enum class Status {
ACTIVE, INACTIVE, PENDING, COMPLETED;
fun isFinal(): Boolean {
return this == COMPLETED
}
companion object {
fun fromString(value: String): Status? {
return values().find { it.name.equals(value, ignoreCase = true) }
}
}
val displayName: String
get() = name.lowercase().replaceFirstChar { it.uppercase() }
}
// 4. Interfaces
interface Drawable {
fun draw()
val area: Double
}
interface Movable {
fun move(dx: Double, dy: Double)
}
// Multiple interface implementation
class Circle(
private var radius: Double,
private var x: Double = 0.0,
private var y: Double = 0.0
) : Drawable, Movable {
init {
require(radius > 0) { "Radius must be positive" }
}
override val area: Double
get() = Math.PI * radius * radius
override fun draw() {
println("Drawing circle at ($x, $y) with radius $radius")
}
override fun move(dx: Double, dy: Double) {
x += dx
y += dy
println("Circle moved to ($x, $y)")
}
// Property with custom setter
var diameter: Double
get() = radius * 2
set(value) {
radius = value / 2
}
}
// 5. Inheritance
abstract class Animal(
protected val name: String,
protected val age: Int
) {
abstract fun makeSound()
fun eat(): String {
return "\$name is eating"
}
}
class Dog(
name: String,
age: Int,
val breed: String
) : Animal(name, age) {
override fun makeSound() {
println("\$name barks: Woof!")
}
fun wagTail() {
println("\$name is wagging its tail")
}
// Property with custom getter
val isPuppy: Boolean
get() = age < 1
}
class Cat(
name: String,
age: Int,
var color: String
) : Animal(name, age) {
override fun makeSound() {
println("\$name meows: Meow!")
}
fun purr() {
println("\$name is purring")
}
override fun eat(): String {
return super.eat() + " cat food"
}
}
// 6. Abstract Class with Factory Pattern
abstract class Vehicle {
abstract val brand: String
abstract val model: String
abstract val year: Int
abstract fun start()
abstract fun stop()
fun info(): String {
return "\$year \$brand \$model"
}
companion object {
fun createCar(brand: String, model: String, year: Int): Car {
return Car(brand, model, year)
}
fun createMotorcycle(brand: String, model: String, year: Int): Motorcycle {
return Motorcycle(brand, model, year)
}
}
}
class Car(
override val brand: String,
override val model: String,
override val year: Int,
val numberOfDoors: Int = 4
) : Vehicle() {
override fun start() {
println("\$brand \$model engine started")
}
override fun stop() {
println("\$brand \$model engine stopped")
}
fun openTrunk() {
println("Trunk opened")
}
}
class Motorcycle(
override val brand: String,
override val model: String,
override val year: Int,
val hasStorage: Boolean = false
) : Vehicle() {
override fun start() {
println("\$brand \$model engine started")
}
override fun stop() {
println("\$brand \$model engine stopped")
}
fun wheelie() {
println("Doing a wheelie!")
}
}
// 7. Object (Singleton)
object Database {
private val connections = mutableListOf<String>()
fun addConnection(connectionString: String) {
connections.add(connectionString)
println("Added connection: $connectionString")
}
fun getConnectionCount(): Int {
return connections.size
}
fun clearConnections() {
connections.clear()
println("All connections cleared")
}
}
// 8. Companion Object (Factory methods)
class HttpClient private constructor(
private val baseUrl: String,
private val timeout: Int
) {
fun get(endpoint: String): String {
return "GET $baseUrl$endpoint"
}
companion object {
fun createDefault(): HttpClient {
return HttpClient("https://api.example.com", 30)
}
fun createCustom(baseUrl: String, timeout: Int): HttpClient {
return HttpClient(baseUrl, timeout)
}
}
}
// 9. Extension Functions
fun String.isEmail(): Boolean {
return this.contains("@") && this.contains(".")
}
fun String.capitalizeWords(): String {
return this.split(" ")
.joinToString(" ") { it.replaceFirstChar { it.uppercase() } }
}
fun Int.isEven(): Boolean = this % 2 == 0
fun List<Int>.sumOfSquares(): Int = this.map { it * it }.sum()
// Extension properties
val String.isValidPassword: Boolean
get() = this.length >= 8 && this.any { it.isUpperCase() } && this.any { it.isDigit() }
// 10. Generic Classes
class Stack<T>(private vararg val items: T) {
private val elements = mutableListOf(*items)
fun push(item: T) {
elements.add(item)
}
fun pop(): T? {
return if (elements.isNotEmpty()) {
elements.removeAt(elements.size - 1)
} else {
null
}
}
fun peek(): T? {
return elements.lastOrNull()
}
val size: Int
get() = elements.size
val isEmpty: Boolean
get() = elements.isEmpty()
fun <R> map(transform: (T) -> R): Stack<R> {
return Stack<R>(*elements.map(transform).toTypedArray())
}
}
// 11. Delegation
interface Logger {
fun log(message: String)
fun error(message: String)
}
class ConsoleLogger : Logger {
override fun log(message: String) {
println("LOG: $message")
}
override fun error(message: String) {
println("ERROR: $message")
}
}
class FileLogger : Logger {
private val filename = "app.log"
override fun log(message: String) {
// Write to file
println("FILE LOG: $message")
}
override fun error(message: String) {
// Write error to file
println("FILE ERROR: $message")
}
}
// Delegated logger
class UserService(
private val logger: Logger
) : Logger by logger {
fun createUser(name: String, email: String): User {
log("Creating user: $name")
// Simulate user creation
val user = User(
id = System.currentTimeMillis(),
username = name.lowercase().replace(" ", "_"),
email = email
)
log("User created with ID: ${user.id}")
return user
}
fun deleteUser(userId: Long) {
error("User deletion requested for ID: $userId")
// Delete user logic here
}
}
// 12. Scope Functions
fun demonstrateScopeFunctions() {
// apply: used for object configuration
val person = Person("Alice", 25).apply {
age = 26
email = "[email protected]"
}
// let: executes block on non-null object and returns result
val result = person.let {
"User: ${it.name}, Age: ${it.age}"
}
// run: similar to let but for object and returns any type
val userStatus = person.run {
when {
isAdult -> "Adult"
age < 13 -> "Child"
else -> "Teenager"
}
}
// also: similar to apply but returns object (for chaining)
val configuredPerson = person.also {
println("Configured person: \${it.name}")
}
println("Result: \$result")
println("Status: \$userStatus")
println("Final person: \${configuredPerson.name}")
}
// Main function demonstrating all concepts
fun main() {
// Data class demo
demonstrateDataClass()
// Sealed class demo
val result1: Result<String> = Result.Success("Data loaded successfully")
val result2: Result<String> = Result.Error(Exception("Network error"))
when (result1) {
is Result.Success -> println("Success: ${result1.data}")
is Result.Error -> println("Error: ${result2.exception.message}")
is Result.Loading -> println("Loading...")
}
// Inheritance demo
val dog = Dog("Buddy", 3, "Golden Retriever")
val cat = Cat("Whiskers", 2, "gray")
dog.makeSound()
dog.wagTail()
cat.makeSound()
cat.purr()
// Vehicle factory demo
val car = Vehicle.createCar("Toyota", "Camry", 2022)
val motorcycle = Vehicle.createMotorcycle("Harley", "Davidson", 2021)
car.start()
car.openTrunk()
motorcycle.start()
motorcycle.wheelie()
// Singleton demo
Database.addConnection("localhost:5432")
Database.addConnection("remote:5432")
println("Total connections: ${Database.getConnectionCount()}")
// Extension functions demo
val email = "[email protected]"
val words = "hello world kotlin programming"
val numbers = listOf(1, 2, 3, 4, 5)
println("Is email: ${email.isEmail()}")
println("Capitalized: ${words.capitalizeWords()}")
println("Even numbers count: ${numbers.count { it.isEven() }}")
println("Sum of squares: ${numbers.sumOfSquares()}")
println("Password valid: ${"Password123".isValidPassword}")
// Generic stack demo
val intStack = Stack(1, 2, 3)
intStack.push(4)
println("Popped: ${intStack.pop()}")
println("Stack size: ${intStack.size}")
// Delegation demo
val consoleLogger = ConsoleLogger()
val userService = UserService(consoleLogger)
val user = userService.createUser("John Doe", "[email protected]")
userService.deleteUser(user.id)
// Scope functions demo
demonstrateScopeFunctions()
}
💻 Coroutines et Concurrence Kotlin kotlin
🔴 complex
⭐⭐⭐⭐⭐
Coroutines modernes Kotlin pour programmation asynchrone, concurrence structurée et traitement parallèle
⏱️ 50 min
🏷️ kotlin, coroutines, async, parallel
Prerequisites:
Advanced Kotlin, Concurrency concepts, Kotlin coroutines library
// Kotlin Coroutines and Concurrency Examples
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.sync.*
import kotlin.random.Random
import kotlin.system.measureTimeMillis
// 1. Basic Coroutine Launch
fun basicCoroutineExample() = runBlocking {
println("Start")
// Launch a new coroutine
launch {
delay(1000) // Non-blocking delay
println("Inside launch")
}
println("End of runBlocking")
}
// 2. Async/Await Pattern
suspend fun fetchUserData(): User {
delay(1000) // Simulate network call
return User(
id = Random.nextLong(),
username = "user_${Random.nextInt()}",
email = "user${Random.nextInt()}@example.com"
)
}
fun asyncAwaitExample() = runBlocking {
val time = measureTimeMillis {
// Launch multiple async operations
val deferred1 = async { fetchUserData() }
val deferred2 = async { fetchUserData() }
val deferred3 = async { fetchUserData() }
// Wait for all results
val user1 = deferred1.await()
val user2 = deferred2.await()
val user3 = deferred3.await()
println("Users fetched: ${user1.username}, ${user2.username}, ${user3.username}")
}
println("Total time: $time ms")
}
// 3. Coroutine Contexts and Dispatchers
fun dispatchersExample() = runBlocking {
// Main thread
println("Main thread: ${Thread.currentThread().name}")
launch(Dispatchers.Default) {
// Background thread for CPU-intensive work
println("Background thread: ${Thread.currentThread().name}")
val result = (1..1_000_000).map { it * 2 }.sum()
println("Computation result: $result")
}
launch(Dispatchers.IO) {
// I/O thread for blocking operations
println("IO thread: ${Thread.currentThread().name}")
Thread.sleep(1000) // Simulate blocking I/O
println("I/O operation completed")
}
delay(2000) // Wait for background work
}
// 4. Structured Concurrency with SupervisorJob
fun structuredConcurrencyExample() = runBlocking {
val supervisorJob = SupervisorJob()
with(CoroutineScope(supervisorJob)) {
launch {
delay(1000)
println("Child 1 completed")
throw Exception("Child 1 failed") // This won't affect other children
}
launch {
delay(1500)
println("Child 2 completed")
}
launch {
delay(2000)
println("Child 3 completed")
}
}
println("Parent scope completed")
}
// 5. Coroutine Scopes and Contexts
class UserRepository {
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
suspend fun loadUsers(): List<User> = withContext(Dispatchers.IO) {
delay(1000)
(1..5).map {
User(it.toLong(), "user$it", "[email protected]")
}
}
fun refreshUsers(onComplete: (List<User>) -> Unit) {
scope.launch {
val users = loadUsers()
onComplete(users)
}
}
fun cleanup() {
scope.cancel()
}
}
// 6. Channels for Coroutine Communication
fun channelExample() = runBlocking {
val channel = Channel<Int>(10)
// Producer coroutine
val producer = launch {
for (i in 1..10) {
channel.send(i)
println("Sent: $i")
delay(100)
}
channel.close()
}
// Consumer coroutine
val consumer = launch {
for (value in channel) {
println("Received: $value")
delay(150)
}
}
producer.join()
consumer.join()
}
// 7. Actor Pattern
sealed class CounterMessage {
object Increment : CounterMessage()
object Decrement : CounterMessage()
class GetValue(val response: CompletableDeferred<Int>) : CounterMessage()
}
fun actorExample() = runBlocking {
val counterActor = actor<CounterMessage>(Dispatchers.Default) {
var counter = 0
for (message in channel) {
when (message) {
is CounterMessage.Increment -> counter++
is CounterMessage.Decrement -> counter--
is CounterMessage.GetValue -> message.response.complete(counter)
}
}
}
// Send messages to actor
repeat(5) {
counterActor.send(CounterMessage.Increment)
}
// Get value from actor
val response = CompletableDeferred<Int>()
counterActor.send(CounterMessage.GetValue(response))
val value = response.await()
println("Counter value: $value")
counterActor.close()
}
// 8. Flow for Reactive Streams
fun flowExample() = runBlocking {
val flow = flow {
for (i in 1..10) {
delay(100)
emit(i)
}
}
flow
.filter { it % 2 == 0 }
.map { it * it }
.collect { value ->
println("Collected: $value")
}
}
// 9. StateFlow and SharedFlow
class NewsRepository {
private val _news = MutableStateFlow("No news yet")
val news: StateFlow<String> = _news
private val _updates = MutableSharedFlow<String>()
val updates: SharedFlow<String> = _updates
suspend fun fetchLatestNews() {
delay(1000)
_news.value = "Breaking: Kotlin coroutines are awesome!"
_updates.emit("News updated at ${System.currentTimeMillis()}")
}
}
fun stateFlowExample() = runBlocking {
val repository = NewsRepository()
// Collect news updates
val newsJob = launch {
repository.news.collect { news ->
println("News update: $news")
}
}
// Collect specific updates
val updatesJob = launch {
repository.updates.collect { update ->
println("Update: $update")
}
}
// Simulate multiple news updates
repeat(3) {
delay(1500)
repository.fetchLatestNews()
}
delay(500)
newsJob.cancel()
updatesJob.cancel()
}
// 10. Coroutine Exception Handling
fun exceptionHandlingExample() = runBlocking {
val handler = CoroutineExceptionHandler { _, exception ->
println("Caught ${exception::class.simpleName}: ${exception.message}")
}
val job = launch(handler) {
println("About to throw exception")
throw RuntimeException("Something went wrong!")
}
job.join()
// Exception handling with try-catch
try {
val result = async {
delay(500)
throw IllegalArgumentException("Invalid argument")
}.await()
} catch (e: Exception) {
println("Caught exception: ${e.message}")
}
}
// 11. Parallel Processing with Coroutines
suspend fun processDataInParallel(data: List<Int>): List<Int> = coroutineScope {
val chunkSize = 100
val chunks = data.chunked(chunkSize)
chunks.map { chunk ->
async(Dispatchers.Default) {
chunk.map { it * 2 }
}
}.awaitAll().flatten()
}
fun parallelProcessingExample() = runBlocking {
val data = (1..1000).toList()
val time = measureTimeMillis {
val result = processDataInParallel(data)
println("Processed ${result.size} items")
}
println("Parallel processing took: $time ms")
}
// 12. Debounce and Throttle Operators
fun debounceThrottleExample() = runBlocking {
val events = MutableSharedFlow<Int>()
// Debounce operator
val debouncedFlow = events
.debounce(300)
.onEach { println("Debounced: $it") }
.launchIn(this)
// Throttle operator
val throttledFlow = events
.sample(200)
.onEach { println("Throttled: $it") }
.launchIn(this)
// Emit events rapidly
repeat(10) { i ->
delay(100)
events.emit(i)
}
delay(1000)
}
// 13. Retry Mechanism
suspend fun <T> retry(
times: Int = 3,
initialDelayMillis: Long = 100,
factor: Double = 2.0,
block: suspend () -> T
): T {
var currentDelay = initialDelayMillis
repeat(times - 1) {
try {
return block()
} catch (e: Exception) {
println("Attempt failed: ${e.message}. Retrying in ${currentDelay}ms")
delay(currentDelay)
currentDelay = (currentDelay * factor).toLong()
}
}
return block() // Last attempt
}
fun retryExample() = runBlocking {
var attempts = 0
val result = retry(times = 3) {
attempts++
if (attempts < 3) {
throw RuntimeException("Simulated failure")
}
"Success after $attempts attempts"
}
println(result)
}
// 14. Coroutine Timeout
fun timeoutExample() = runBlocking {
try {
withTimeout(1000) {
delay(2000) // This will timeout
"This won't be reached"
}
} catch (e: TimeoutCancellationException) {
println("Operation timed out: ${e.message}")
}
try {
val result = withTimeoutOrNull(1500) {
delay(1000) // This will succeed
"Operation completed successfully"
}
println("Result: \$result")
} catch (e: Exception) {
println("Unexpected error: ${e.message}")
}
}
// 15. Coroutine Worker Pool
class WorkerPool(private val poolSize: Int) {
private val job = SupervisorJob()
private val dispatcher = Dispatchers.Default.limitedParallelism(poolSize)
private val channel = Channel<suspend () -> Unit>(Channel.UNLIMITED)
init {
repeat(poolSize) {
launch(dispatcher) {
for (task in channel) {
try {
task()
} catch (e: Exception) {
println("Worker error: ${e.message}")
}
}
}
}
}
suspend fun execute(task: suspend () -> Unit) {
channel.send(task)
}
fun shutdown() {
job.cancel()
channel.close()
}
}
fun workerPoolExample() = runBlocking {
val pool = WorkerPool(3)
repeat(10) { i ->
pool.execute {
delay(Random.nextLong(100, 500))
println("Task $i completed by ${Thread.currentThread().name}")
}
}
delay(3000)
pool.shutdown()
}
// Main function demonstrating all coroutine examples
fun main() {
println("=== Kotlin Coroutines Examples ===
")
// Basic examples
println("1. Basic Coroutine:")
basicCoroutineExample()
println("
2. Async/Await:")
asyncAwaitExample()
println("
3. Dispatchers:")
dispatchersExample()
println("
4. Structured Concurrency:")
structuredConcurrencyExample()
println("
5. Channel Communication:")
channelExample()
println("
6. Actor Pattern:")
actorExample()
println("
7. Flow Reactive Streams:")
flowExample()
println("
8. StateFlow and SharedFlow:")
stateFlowExample()
println("
9. Exception Handling:")
exceptionHandlingExample()
println("
10. Parallel Processing:")
parallelProcessingExample()
println("
11. Debounce and Throttle:")
debounceThrottleExample()
println("
12. Retry Mechanism:")
retryExample()
println("
13. Timeout:")
timeoutExample()
println("
14. Worker Pool:")
workerPoolExample()
println("
=== Coroutines Examples Completed ===")
}