你有一个存储对象O。
假设您在一个线程中有 n 个读取器方法和一个写入器方法。如果线程调用了 writer 方法,则所有 reader 方法都不能访问 O,但是如果 reader 方法访问 O,则任何其他 reader 都可以访问 O 但不能访问 writer。我可以使用 Java 中的“同步”语句以某种方式实现此行为吗?如果不是:我还能如何实现这一目标?
提前谢谢你。
最佳答案
你可以使用 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();
}
关于java - Java中线程的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793483/