<p>Consider this problem: I have a program which should fetch (let's say) 100 records from a database, and then for each one it should get updated information from a web service. There are two ways to introduce parallelism in this scenario:</p>

<ol>
<li><p>I start each request to the web service on a new Thread. The number of simultaneous threads is controlled by some external parameter (or dynamically adjusted somehow).</p></li>
<li><p>I create smaller batches (let's say of 10 records each) and launch each batch on a separate thread (so taking our example, 10 threads).</p></li>
</ol>

<p>Which is a better approach, and why do you think so?</p>

Two things to consider.
1. How long will it take to process a record?
If record processing is very quick, the overhead of handing off records to threads can become a bottleneck.  In this case, you would want to bundle records so that you don't have to hand them off so often.
If record processing is reasonably long-running, the difference will be negligible, so the simpler approach (1 record per thread) is probably the best.
2. How many threads are you planning on starting?
If you aren't using a threadpool, I think you either need to manually limit the number of threads, or you need to break the data into big chunks.  Starting a new thread for every record will leave your system thrashing if the number of records get large.