Как я могу поставить блокировку вокруг InputStream и освободить, когда чтение завершено - PullRequest
0 голосов
/ 01 декабря 2011

Я хочу установить Блокировку вокруг java.io.InputStream Объекта и заблокировать этот поток. И когда я закончу читать, я хочу снять блокировку. Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Вы имеете в виду?

InputStream is =
synchronized(is) { // obtains lock
    // read is
} // release lock

Обычно хорошей идеей является использование одного потока для чтения или записи в поток, в противном случае вы можете получить некоторые запутанные и случайные ошибки.;)

Если вы также хотите использовать блокировку

InputStream is =
Lock lockForIs = 
lockForIs.lock();
try {
    // read is
} finally {
    lockForIs.unlock();
}
0 голосов
/ 01 декабря 2011

Вы не можете просто заблокировать InputStream, так как это не помешает доступу записи для соответствующего OutputStream; Вы должны проверить блокировку в любое время, когда хотите записать из OutputStream.

...