Interrupts can be used to stop the current execution, they are handled by the interrupt controller.

Once an interrupt occurs, the current job is stored in a run queue. Interrupts can be expensive as they require storing the current job (and it’s state) and then switching to the interrupting job.