Multitasking - It is also called time sharing because multiple tasks(or processes) can be switched regularly, in a particular time, so that the user can get a view that they are operating concurrently.
Multi-threading - To make the user experience richer, the tasks(in a single process) are further divided into sub-tasks. These sub-tasks then can operate in a multi-tasking environment.
Multiprocessing - It is the process of having multiple processors to run a process(or program), in a given time. It decreases the computation time.
Multi programming - It is used in batch operating systems, generally. Here, the job(or process) gets the full CPU and memory while execution. Multi programming is the system in which many different programs are loaded in computer's main memory, and the first one begins to run. When it finishes its execution(i.e., in running state) and waits for peripheral(i.e., waiting state), the next process begins to run. This is in contrast to multi-tasking, in which case each task is allotted a time slot(also called quantum) for its execution.