When JNLP v4 protocol is in use with non blocking IO when there is more than one buffers worth of data to read we re-add the OP_READ to the selector for each read buffer even though we drain until we have read all the data available.
This causes a new Thread to be created to handles the callback (when the selector wakes up) - but each thread will be blocked as the current thread is still reading and holding the read lock.
see https://github.com/jenkinsci/remoting/blob/c3e675c9f1dc29a8fd99eca191c1ce1e5ebb2a7e/src/main/java/org/jenkinsci/remoting/protocol/impl/NIONetworkLayer.java#L150-L155