Non-preemptive scheduling is a CPU scheduling method where a running process is not interrupted and holds the CPU until it completes or voluntarily yields control, ensuring predictable execution times. This approach is beneficial for real-time systems requiring task determinism, but can lead to inefficiencies like increased wait times for shorter tasks if a longer task is running.