These are little-used legacy classes, probably based on Unix pipes. But the behavior in the presence of multiple threads is ill-defined (see
JDK-4754776). Also, it seems odd in the first place for threads in the same JVM to be sending bytes or chars to each other. It would be better to use java.util.concurrent classes for inter-thread communication.