<p>In my Java program, I create an <a href="http://www.erlang.org/doc/apps/jinterface/java/com/ericsson/otp/erlang/OtpNode.html" rel="nofollow noreferrer">OtpNode</a> and a "named" <a href="http://www.erlang.org/doc/apps/jinterface/java/com/ericsson/otp/erlang/OtpMbox.html" rel="nofollow noreferrer">OtpMBox</a>. Whenever a message is received via this mbox, some time-consuming operation needs to be performed after which a reply message is sent back. Since this operation is time-consuming, subsequent messages sent to the mbox won't be processed immediately. </p>

<p>So I want to use Java threads - one per message received. My question is should I also create a new <a href="http://www.erlang.org/doc/apps/jinterface/java/com/ericsson/otp/erlang/OtpMbox.html" rel="nofollow noreferrer">OtpMBox</a> for each message received or can the original OtpMBox be shared among all the threads?</p>

I'm not really familiar with this stuff, but I suppose you may do some calculates )
You have overhead of running OtpMBox for each java-thread and overhead of controlling system (written in java) that would ask different threads to do some work and take results from them. I believe java isn't good tool for it )
You better do java-thread 'supervisor' that will start some (may be number of CPUs) amount 'worker' java-threads with OtpMBox and send OtpMBox's pids to erlang system.
--sorry my english