This were the only two questions I couldn\'t answer in the interview I got rejected from last night.
You should use multithreading when you want to perform heavy operations without "blocking" the flow.
Example in UIs where you do a heavy processing in a background thread but the UI is still active.
If the threads execute mutually exclusive tasks it is the best since there is no overhead for synchronization among threads needed
This article gives very good reasons: https://marcja.wordpress.com/2007/04/06/four-reasons-to-use-multithreading/
To summarize, the reasons are:
You can use multithreading if the tasks can be broken down which can be executed in parallel. Like produce and consume , Validate and save , Read and Validate.
For the second question , Yes, it is beneficial for make a program into Multi threading if they are executing independent tasks.