I think Athar meant threads as in multithreading - running your program under more than one thread. This would cause your processor to 'splice' time between multiple threads of your program, and in the case of 2 or more cores, each thread would be literally executing at the same time. Either way, you could conceptually think of each thread as running simultaneously.
You are always going to have to call functions from within other functions, or from classes. I don't think there is a way around this. Functions are placed on the call stack - not the heap (in memory), so even conceptually, only one function can be executing at any given time, except in multithreaded environments.
Having functions that perform a well-defined task and building functions that perform greater tasks by calling various other functions is the core concept of imperative programming, so you won't get around it. It certainly is not a 'problem'.