what is preemptive and non-preemptive scheduling?

In case of non-preemptive scheduling,once the cpu has been allocated to a process then the process keeps the cpu until it release the cpu either by terminating or by switching to the waiting state while in case of preemptive scheduling cpu executes one process for some amount of time and then takes other process for execution by preempting the first process.i.e. preemptive prevents a single process form monopoling the cpu.