If several threads attempt to read from a Socket's input stream at the same time then all but the winner will block trying to acquire the read lock. This is okay for untimed-reads but surprising for timed-reads as the timeout is only effective after acquiring the lock. The SocketImpl is changed so that the timeout applies to the total time waiting to acquire and read.
A new test is added to the existing java/net/Socket/Timeouts test. It is migrated from TestNG to a JUnit test as a drive-by change - it's mostly mechanical and the changes kept as minimal as possible. ------------- Commit messages: - Initial commit Changes: https://git.openjdk.org/jdk/pull/25614/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25614&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8358496 Stats: 173 lines in 2 files changed: 67 ins; 11 del; 95 mod Patch: https://git.openjdk.org/jdk/pull/25614.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25614/head:pull/25614 PR: https://git.openjdk.org/jdk/pull/25614