Other protocols don't care and allow client requests and server responses to be freely intermixed.
Java places no restrictions on reading and writing to sockets.
One thread can read from a socket while another thread writes to the socket at the same time.