When setting optimizedDispatch the transport thread will directly do the dispatch to queue, otherwise a broker task thread does it.
If you want to get a better understanding you can either dig into code or (simpler) look at some traces, e.g. setting DEBUG level trace for: org.apache.activemq.broker, org.apache.activemq.thread, org.apache.activemq.transport Then process a message and look at the log output including thread names for certain actions. The task threads in the thread dump are named as BrokerService[mqbrokerdev] Task-1, Task-2. Regarding thread reduction. You will not see this directly in the thread overview as the threads are created on demand and might be gone already doing the thread dump. Setting UseDedicatedTaskRunner=true creates a dedicated thread for each task. Setting it to false uses a PooledTaskRunner and a thread from a thread pool. The difference is only obvious in the thread dump if there is really a lot of traffic on the broker. By the way. If org.apache.activemq.UseDedicatedTaskRunner is not explicitly set to true, then thread pooling will be used. -- View this message in context: http://activemq.2283324.n4.nabble.com/What-is-the-effect-of-dedicatedTaskRunner-Attribute-tp2363191p4677849.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.