Sure. The exact situation you’re describing shouldn’t be a problem (reading and writing simultaneously).
Generally, the reading thread will block if there’s nothing to read, and might timeout on the read operation if you’ve got a timeout specified.
Since the input stream and the output stream are separate objects within the Socket, the only thing you might concern yourself with is, what happens if you had 2 threads trying to read or write (two threads, same input/output stream) at the same time? The read/write methods of the InputStream/OutputStream classes are not synchronized. It is possible, however, that if you’re using a sub-class of InputStream/OutputStream, that the reading/writing methods you’re calling are synchronized. You can check the javadoc for whatever class/methods you’re calling, and find that out pretty quick.