I reject the idea, that because I want to scale, I should have to write thread pools, executors, concurrent queues, and task completion APIs. This is 2012, any idiom, functional or not that doesnt support this as a built in capability is less than worthless. How many times do I have to write, rewrite and debug the obvious just to make a living? And as for the factory pattern, yes you can use it to hide a whole bomb load of configuration and code evil, that you probably should never even have to worry about, if you werent working in such a crap tool
Which is why I love working in a Java EE application server like Geronimo where very smart people have gotten paid lots of money to do that boring grunt-work for me, and I can just spend my time building features and deploy a nice scalable system when I'm done.