The app server will create a pool of MDB instances and give each one the next message in the queue. Thus there is no need for you to fork off a thread. The pool size is configurable - you get 15 instances by default. A while ago I ran some tests that numbered the instances.
You didn't mention which version of JBoss AS, nor which level of
EJB, so I will assume AS 5.1.0 and EJB 3. You can change the limit in ejb3-interceptors-aop.xml file, look for the Message Driven Beans entry, the maxSize portion of the default annotation. Of course, you can also apply your own @Pool annotation to your MDB.
Here is a discussion on this topic:
http://community.jboss.org/thread/149187