Yes but there’s all the abnormal cases like shouldExit() and such, and adding it to the jobs will mean another inheritance to the ThreadPoolJob.
I just thought it will be more smoothly that way.
It’s trivial to just add whatever call you need at the end of your runJob() method, and that’d certainly be much cleaner than changing the ThreadPool class to be inheritable and then creating subclasses of it, just to find out when a job has finished!