Исключение при окончании записи возникает в следующей ситуации: Два потока:
A: PipedOutputStream put = new PipedOutputStream();
String msg = "MESSAGE";
output.wirte(msg.getBytes());
output.flush();
B: PipedInputStream get = new PipedOutputStream(A.put);
byte[] get_msg = new byte[1024];
get.read(get_msg);
Вот ситуация: A и B работают одновременно, и A записывает в канал, а B читает его.B только что прочитал из трубы и буфер этой трубы очищен.Тогда A не записывает сообщение в канал в неизвестном интервале.Однако в один момент B снова читает канал и появляется java.io.IOException: write end dead
, потому что буфер канала все еще пуст.И я не хочу спать () поток B, чтобы ждать, пока A пишет канал, что также нестабильно.Как избежать этой проблемы и решить ее?Спасибо