MULTITASKING :
multitasking is a method where multiple tasks (also known as processes) are performed during the same period of time – they are executed concurrently (have multiple processors).
Multiprogramming:
Multiprogramming is a rudimentary form of parallel processing in which several programs are run at the same time on a uniprocessor (but CPU will be given to only one process at a time).
Multi Threading:
Multithreading is a type of execution model that allows multiple threads to exist within the context of a process such that they execute independently but share their process resources. A thread maintains a list of information relevant to its execution including the priority schedule, exception handlers, a set of CPU registers, and stack state in the address space of its hosting process.Threading can be useful in a single-processor system by allowing the main execution thread to be responsive to user input, while the additional worker thread can execute long-running tasks that do not need user intervention in the background.