gpt4 book ai didi

java - 是否有任何 java 集合包装器/集合在多线程访问时失败?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:10 28 4
gpt4 key购买 nike

我正在尝试跟踪大型代码库中与集合相关的一些并发问题。

我想用一个替代实现替换所有集合/映射,该实现在第三个线程访问它时抛出异常(或类似的;我可以看到几种可能有效的策略)。有人知道执行此操作的任何库/工具/策略吗?

我正在考虑在整个代码库中进行搜索替换,只是暂时将对“新 HashMap”之类的任何引用替换为不同的版本。但也许有更好的方法?

最佳答案

您可以尝试使用 ReentrantLock 包装 HashMap get() 和 put() 方法(或您使用的其他方法):

java.util.concurrent.locks.ReentrantLock



class X {
private final ReentrantLock lock = new ReentrantLock();

public void m() {
if ( ! lock.tryLock() ) {
// already locked, hint: lock.isHeldByCurrentThread() ?
}
lock.lock();
try {
// delegate to wrapped hashMap
}
finally {
lock.unlock()
}
}

关于java - 是否有任何 java 集合包装器/集合在多线程访问时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190738/

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