如何在读取完成后锁定InputStream并释放

时间:2011-12-01 14:35:59

标签: java multithreading inputstream

我想在java.io.InputStream对象周围放置一个Lock并锁定此流。当我完成阅读后,我想释放锁定。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

你的意思是?

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

使用一个线程来读取或写入流通常是一个好主意,否则您可能会遇到一些令人困惑和随机的错误。 ;)

如果你想使用锁

InputStream is =
Lock lockForIs = 
lockForIs.lock();
try {
    // read is
} finally {
    lockForIs.unlock();
}

答案 1 :(得分:0)

您不能只锁定InputStream,因为它不会阻止来自相关OutputStream的写访问;你必须在任何想要从OutputStream写入的时候检查锁。