We should look into implementations of hbase 1.x (and maybe 2.x) and bigtable-java to verify if it is safe to use a single Table object and a ResultScanner object created using that table in separate threads without synchronization. If the scanner internally uses its parent table, then I think that we can say that it is not safe at all. We should find and report exact places in code where such usages occur.