Execution of multiple threads on a single CPU in some order is called thread scheduling. It is done by thread scheduler.
In which order threads will execute in multithreading environment is determined by thread scheduler.
What is the difference between preemptive scheduling and time slicing?
In case of preemptive scheduling the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence.
Time slicing: In case of time slicing a task executes for a predefined slice of time and then re-enters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.