Never mind the bit about start()/stop(). An impl can achieve the same behavior by caching the TCCL in effect when its constructor is invoked. And no lifecycle methods means no reason for the impl to not be in common-core.
I implemented and tested this before JBW, but this statement had me concerned so I'd put this on the shelf:
If no ClassLoaderSource is injected, the TCCL will be set to null.
That's a concern because I see a lot of possible usage of BasicThreadPool outside the AS itself. The above is a change in behavior and there's no way I can find and test every possible user of this class. Or at least I don't want to. ;-)
So, I intend to instead make it that if no ClassLoaderSource is injected, the pool doesn't mess with the TCCL -- i.e. the existing behavior continues. We can then find the usages of BasicThreadPool in the JBoss AS codebase itself and make sure they have an appropriate ClassLoaderSource injected.