The problem is that there is a fair amount of overhead required to switch from one processes to another. The smaller you make the time quantum, the larger will be the overhead of using time slicing. Therefore, you want to pick a time quantum that is a good balance between smooth process switching and too much overhead. These two types of processes differ mainly in the details of memory management. A heavyweight process swaps memory management tables and moves lots of data around.
Threads only swap the stack and CPU registers.
Threads have much less overhead cost than heavyweight processes. We will not consider heavyweight processes in this text. Switching from one heavyweight application to another generally corresponds to switching from one application to another. For example, we could think of each of the demons in the maze generation program as being a separate thread of execution. Although threads have different stacks and machine states, they share code and data memory.