Does RMI handles multiple clients by itself? i.e.
yes
how it works? does it make a new thread for each call? if one clients blocks the function what would happen with the next client? etc.
It creates a thread for each client connection.
If one client calls a synchronized method or one which blocks other calls, calls made by other threads will block until that call releases the resource.
It sounds like you already worked out the answers, do you have a more specific doubt?
Yes RMI does handles multiple clients, but you must make your server threadsafe , RMI will dispatch multiple threads into a single server object if multiple clients simultanuosly make methods call on it so if your server isn't threadsafe your application will fail.