1

你有一个存储对象 O。

假设您在一个线程中有 n 个读取器方法和一个写入器方法。如果 writer 方法被线程调用,则没有一个 reader 方法应该能够访问 O,但是如果 reader 方法访问 O,则任何其他 reader 可以访问 O,但不能访问 writer。我可以使用 Java 中的“同步”语句以某种方式实现此行为吗?如果没有:我还能如何实现这一目标?

先感谢您。

4

1 回答 1

7

你可以使用一个ReadWriteLock. 您将它分配到读写器线程可以访问它的地方。也许将它传递给他们的构造函数。

ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

读者会这样做:

Lock lock = readWriteLock.readLock();
lock.lock();
try {
  // do read operations here...
} finally {
  lock.unlock();
}

作家会这样做:

Lock lock = readWriteLock.writeLock();
lock.lock();
try {
  // do write operations here...
} finally {
  lock.unlock();
}
于 2013-04-03T16:57:28.907 回答