In traditional synchronous programming tasks/statements are executed one after the other in sequential form. The program waits for a task/statement to be executed before proceeding to the next one.