The API specification of close() specifies that
If the stream is already closed then invoking this method has no effect.
But JsonTokenizer.close() violates this by recycling its buffer for each call to close(). This results in the same buffer being provided by the BufferPool to multiple threads that operate on the same buffer causing data corruption.
This is the same issue that was already fixed for the JsonGenerator. See commit 06af407