The C-style select() functionality is available in Java using the java.nio.channels.* library. Look up the Javadoc for this library. At the bottom of the page, it gives a general description of all the classes. The main classes you will be interested in are:
Selector, SelectionKey and DatagramChannel
You will not need select functionality for reading user input or the TCP stream because you have the available() method of the InputStream class that allows you to poll whether bytes may be read or not.
An example for how to use channels with Datagrams is given here.
An alternative way for implementing non-blocking UDP sockets is to use the DatagramSocket.setSoTimeout(int timeInMilliSec) function. This will ensure that the UDP socket does not block on a receive for more than the specified time. You will probably have to set this to a very low value (~30-100) to ensure that the user does not feel that the program is being unresponsive.
If there are any other problems that the Java people have, feel free to email me at rik@berkeley.edu
Rishi