In this post I'll explain what non-blocking I/O is, how you can use it, and when it might be useful. The code examples will be in Kotlin and running on the JVM, but the principles behind this would work regardless of programming language as this is usually supported through the kernel of your OS.