Not quite: RMI creates a thread for every client *connection*, and
clients can re-use connections within a controllable expiry period. This
still doesn't scale well but it's not as bad as a thread per call. I
believe that JDK 1.5 is planned to use NIO for RMI, but don't quote me;
also you should have a look at the Jini Davis project, which has an
alternate implementation of JRMP as well as an entire new RMI protocol.
I believe there are plans to use NIO in one or both of these too, but
again don't quote me. With Davis you would have to comply with the Jini
licence as well as the Java licence.