Both client and server sides can be massively multi-threaded.
Given an active Socket, the program keeps writes from multiple threads organized and makes read data available on a dedicated thread.
The class can handle all 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.
SocketConnection also handles the many problems and failures than can beset a socket connection.
A working demo si included.
Documentation is also provided in Javadoc format.