The number of worker threads is configurable at startup and remains constant afterwards for the life of the moxi process, based on the -t NUM_THREADS command-line parameter.
After a worker thread is assigned to "own" an upstream connection, that upstream connection is now handled by just that one worker thread. Moxi takes advantage of this design to allow it to avoid a lot of unnecessary locking, since there's hardly any communication between worker threads.