Execution of multiple threads on a single CPU in some order is called thread scheduling.
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.
Note: if run() method is called directly without calling start() method than program will execute without any error but objects are treated as normal objects not thread objects.