Manages a Java Socket connection. Written originally for a network game where both client and server programs were massively multi-threaded. Given an active Socket, the program keeps writes from multiple threads organized and makes read data available on a dedicated thread. Thoroughly Javadoc'ed. Code deals with the threads needed to use a socket as well as the threads that may want to write to the socket simultaneously. Provides a thread to read from the socket. Gracefully handles the many problems and failures than can beset socket connections. Useful as is and can serve as a good example of programming with sockets. A test program is provided that establishes a connection and feeds data both ways.