This information applies from Camel 2.3 onwards
The threading model in Camel is based on leveraging the JDK concurrency API which provides thread pools, named ExecutorService.
Camel leverages thread pools in the following places:
By default when a thread pool is to be created then its based on the default thread pool profile which is:
What that means is that for example when you use Multicast with parallelProcessing=true enabled, then it would create a thread pool based on the profile above. The rejectedPolicy have four options: Abort, CallerRuns, Discard, DiscardOldest which corresponds to the same four options provided out of the box in the JDK.
In Java DSL you can configure the default thread pool profile from the ExecutorServiceStartegy which you access from CamelContext.
All the thread pools that Camel creates are managed and thus you can see them in JConsole under the threadpools category.
Camel provides a pluggable strategy to hook in your own thread pool provider, for example from a WorkManager in a J2EE server etc.
See the org.apache.camel.spi.ExecutorServiceStrategy interface which you should implement and hook into the WorkManager.
See [Advanced XXX config}} for how to configure it.
You can configure it on the CamelContext from Java DSL using the getter/setter.