Cooperative Scheduling

Cooperative scheduling is a style of scheduling in which the OS never interrupts a running process to initiate a context switch from one process to another. Processes must voluntarily yield control periodically or when logically blocked on a resource.

Preemptive Scheduling

Preemptive Scheduling is a multitasking strategy which permits the preemption of tasks. Preemption is the act of interrupting a task currently running on the CPU, usually to execute a higher-priority task, with the intention of resuming the interrupted task at a later time.

Active Object [AO]

The active object design pattern decouples method execution from method invocation for objects that each reside in their own thread of control. Typically, an active object is constructed using an internal thread and a queue of operations or events that will be executed on the active object’s thread. The goal is to enable concurrency using asynchronous invocation, and to eliminate the need for an object to worry about managing threading details itself: that’s all taken care of under the hood.

From Around the Web