use a multi-threaded server. Each single thread can accept() one
connection and handle it. For an example, have a look at the archives
of beginnersclub (it's also about Java), Jacob Skillin
had some interesting questions about this subject.
How you coordinate access to common resources (such as configuration
files and so on) is a different story. For this sort of tasks you'll
probably need some synchronized pieces of code.