gpt4 book ai didi

java - 在 Java 中锁定哈希集

转载 作者:行者123 更新时间:2023-11-29 09:36:09 26 4
gpt4 key购买 nike

我的代码中有一个对象引用的静态 HashSet,它必须禁止所有写入请求,直到给定方法运行(该方法仅将哈希集用于读取目的)。我已阅读 Thread 基础知识,但尚不清楚如何继续执行此操作。

谁能帮帮我?

最佳答案

您提到您已经阅读了 Thread 基础知识,所以我假设您有一个多线程应用程序,其中有多个读取器和/或写入器。您可以使用读写锁来限制对集合的访问。当给定的方法执行时,它锁定读锁,这允许其他人读,但不能写。只要您使用下面的 putInSet 方法(或类似方法)进行写入,您就可以要求写入锁来写入。然后在持有读锁时无法写入该集合。

private final Set<Object> mySet = new HashSet<Object>();
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public void methodThatRunsAndAllowsReadOnly() {
lock.readLock().lock();
try {
// method body here
}
finally {
lock.readLock().unlock();
}
}

public void putInSet(Object o) {
lock.writeLock().lock();
try {
mySet.add(o);
}
finally {
lock.writeLock().unlock();
}
}

关于java - 在 Java 中锁定哈希集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com