When you wanna do several tasks simultaneously in a single program, multi-threading has been a mature choice, not only does it give you that all treads are seemingly running at the same time, it also ...