Book Image

Learning Concurrency in Kotlin

By : Miguel Angel Castiblanco Torres
Book Image

Learning Concurrency in Kotlin

By: Miguel Angel Castiblanco Torres

Overview of this book

Kotlin is a modern and statically typed programming language with support for concurrency. Complete with detailed explanations of essential concepts, practical examples and self-assessment questions, Learning Concurrency in Kotlin addresses the unique challenges in design and implementation of concurrent code. This practical guide will help you to build distributed and scalable applications using Kotlin. Beginning with an introduction to Kotlin's coroutines, you’ll learn how to write concurrent code and understand the fundamental concepts needed to write multithreaded software in Kotlin. You'll explore how to communicate between and synchronize your threads and coroutines to write collaborative asynchronous applications. You'll also learn how to handle errors and exceptions, as well as how to work with a multicore processor to run several programs in parallel. In addition to this, you’ll delve into how coroutines work with each other. Finally, you’ll be able to build an Android application such as an RSS reader by putting your knowledge into practice. By the end of this book, you’ll have learned techniques and skills to write optimized code and multithread applications.
Table of Contents (11 chapters)

Resiliency and stability

This was already mentioned as a bullet point in the section More Advice on Tests, but it's important enough for me to decide to include it as its own section—even if it's a small one.

Depending on the nature of the application that you are writing, it may be acceptable—maybe even expected—that your application will crash if certain conditions aren't met. In other scenarios, like for mobile apps, it's often expected that exceptions will be handled and the application will recover without side effects.

Resiliency is something that needs to be taken into account at the very start of the project. As we saw in previous chapters, you can easily set exception handlers for coroutines, and it doesn't require much work to validate if Deferred or Job ended with an exception, but if you try to add exception handling after...