HBase prefers to invoke read() serving scan request, and invoke pread() serving get reqeust. Because pread() almost holds no lock.
Let's image there's a read() running, because the definition is:
so no other read() request could run concurrently, this is known, but pread() also could not run... because:
the getFileLength() also needs lock. so we need to figure out a no lock impl for getFileLength() before HBase multi stream feature done. Stack