If you made it this far into the course, I want to first say congratulations in module one, you learn
to solve problems using code, and so far in Module two, you learn to write high quality code.
The last section concurrency is not about writing code and building projects, it's more about preparing
you for the future.
In other words, this section is not a definitive guide on low level multithreading.
This section is going to teach you the core concepts of multithreading to prepare you for the future.
What do I mean by that?
Well, I know that most of you after this course are going to pursue Android development or even web
development with spring boot or whatever type of app development you decide to pursue.
You're going to hear these phrases a lot.
A task is blocking the main thread.
The task needs to run on another thread, executing tasks in serial fashion, executing tasks concurrently,
and this code is vulnerable to race conditions and so many more performance related phrases that by
the end of the section, I know that you're going to fully grasp.
I designed this section so that as you start developing real world applications, you'll know exactly
what these fundamental concepts mean when you come across them.
So, yeah, this section is not a definitive guide on low level multithreading, which I personally
find kind of useless when you're building apps because there are so many frameworks APIs that you can
leverage to do all the heavy lifting.
Nonetheless, you still have to understand the core concepts of multi-threading so that you know what's
going on behind the scenes.
I really hope you enjoy this section because I guarantee you it's full of so many eureka moments where
things just come full circle.
OK, I'll see you in there.