This problem isn't really a performance issue though, its more to do with behaviour that the developer wants. He needs 10000 records processed and the performance of that processing really doesn't matter (of course it does, but not for this problem), its the ability to stop the operation but let all the threads finish.
True enough, but creating 100 threads isn't the way to solve it unless they're going to be spending a lot of time blocking. Otherwise you'll just be using all the CPU power performing context switches and never really getting any actual work done.
Naturally. But i think the "100 threads" was more of an example and not a suggestion.