There're some issues with documentation.
Its perfectly fine to launch new threads in bolts that do processing asynchronously. OutputCollector is thread-safe and can be called at any time.
This is caused by having multiple threads issue methods on the OutputCollector. All emits, acks, and fails must happen on the same thread. One subtle way this can happen is if you make a IBasicBolt that emits on a separate thread. IBasicBolt's automatically ack after execute is called, so this would cause multiple threads to use the OutputCollector leading to this exception. When using a basic bolt, all emits must happen in the same thread that runs execute.
It is a contradiction, and at least for now OutputCollector is not thread-safe.
Since newbie of Storm users may think Concepts page as "should read and keep it mind", it is some kind of critical that that such important documentation page has wrong content.