Java Executor: Small tasks or big ones?
- by Arash Shahkar
Consider one big task which could be broken into hundreds of small, independently-runnable tasks. To be more specific, each small task is to send a light network request and decide upon the answer received from the server. These small tasks are not expected to take longer than a second, and involve a few servers in total.
I have in mind two approaches to implement this using the Executor framework, and I want to know which one's better and why.
Create a few, say 5 to 10 tasks each involving doing a bunch of send and receives.
Create a single task (Callable or Runnable) for each send & receive and schedule all of them (hundreds) to be run by the executor.
I'm sorry if my question shows that I'm lazy to test these and see for myself what's better (at least performance-wise). My question, while looking after an answer to this specific case, has a more general aspect. In situations like these when you want to use an executor to do all the scheduling and other stuff, is it better to create lots of small tasks or to group those into a less number of bigger tasks?