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).
Concurrency is helpful whenever there are multiple tasks that need to be run simultaneously. A very common example is in GUI programming; you don't want your UI to freeze up while the program waits for data to load from the disk or network, so you have a thread that just manages the UI elements (called the Event Dispatch Thread in Swing/AWT), and background threads that take care of communications or long-running calculations. The OS swaps them back and forth to make sure that the UI gets redrawn while other tasks are still active.