java - Java中线程的同步

标签 java multithreading synchronization

你有一个存储对象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/

相关文章:

java - 依赖注入(inject),模拟外部库中的东西?

java - 如何使方法采用空值?

java - SHA256Digest 返回一个奇怪的哈希值

database - 本地和远程数据同步

java - 在 Java 中调用 wait() 时,所有 Swing 框架都得到 "frozen"

java - 是否有用于 APT 的 Java 库?

c - 在C中随机时间生成随机线程

快速生产者的 Java "Tiered Queue"实现,慢速消费者

java - java中同步方法同时被访问会发生什么?

java - 在多个线程之间传递POJO(没有易失字段,同步方法)并确保更改可见的正确方法?