{
if (receiverWorkManager.get() == null)
{
final String threadPrefix = ThreadNameHelper.receiver(muleContext, getName());
WorkManager newWorkManager = this.getReceiverThreadingProfile().createWorkManager(
threadPrefix, muleContext.getConfiguration().getShutdownTimeout());
if (receiverWorkManager.compareAndSet(null, newWorkManager))
{
newWorkManager.start();
}
}
if (dispatcherWorkManager.get() == null)
{
ThreadingProfile dispatcherThreadingProfile = this.getDispatcherThreadingProfile();
if (dispatcherThreadingProfile.getMuleContext() == null)
{
dispatcherThreadingProfile.setMuleContext(muleContext);
}
final String threadPrefix = ThreadNameHelper.dispatcher(muleContext, getName());
WorkManager newWorkManager = dispatcherThreadingProfile.createWorkManager(
threadPrefix, muleContext.getConfiguration().getShutdownTimeout());
if (dispatcherWorkManager.compareAndSet(null, newWorkManager))
{
newWorkManager.start();
}
}
if (requesterWorkManager.get() == null)
{
final String threadPrefix = ThreadNameHelper.requester(muleContext, getName());
WorkManager newWorkManager = this.getRequesterThreadingProfile().createWorkManager(
threadPrefix, muleContext.getConfiguration().getShutdownTimeout());
if (requesterWorkManager.compareAndSet(null, newWorkManager))
{
newWorkManager.start();
}
}
}