Only readLineRef() is unsafe. You could actually use readLine() or readInt() (but not mixed) to get data from different threads if you don't care about line ordering. Since we don't have a use case for that, I was thinking about dropping the synchronization in a separate commit.