Question: Recently I have read in a book that Concurrency is a fundamental tool for multiprocessor programming.

> 
> Than how is it useful for single core processor?
> 
> 
>

Answer: 
> 
> Concurrency is a fundamental tool for multiprocessor programming.
> 
> 
> 

Yes, but it can also help in other areas. For instance, concurrency can also improve throughput on a single core system if the cpu is not the bottleneck (for instance, because the threads spend most of their time waiting for I/O from disk or the network).
Being able to switch between running thread is useful for the perception of performance on a single core processor. In many systems, the graphical parts of the UI is updated by another thread than the one doing the work. It would be frustrating for the user to not have any feedback while a long task is running. Another useful application of concurrency on a single core, would be to start a long running task with low priority while the user is free to do other stuff at the same time.