我试图做的是实现一个特定于密钥的读写锁。如果该密钥上没有写入请求,则可以同时执行多个读取请求。可以将不同键上的 Put 请求同时执行。我使用 ConcurrentHashMap 来保存密钥,并记录每个密钥的写入操作运行情况。我的代码如下所示:ConcurrentHashMap<String, AtomicInteger> count;......public void getLock(){ synchronized (count.get(key)) { while (count.get(key).get() != 0) { // this means there are GET requests running try { count.get(key).wait(); } catch (InterruptedException e) { e.printStackTrace(); } } }}这个想法是,当一个新线程想要读取时,它需要首先检查该密钥上是否有任何写入(如果计数不是0),如果没有,它可以继续,如果是,它需要等待。所以我想我必须使用.但是,Java迫使我使用该方法。count.get(key).wait();synchronized (count.get(key))wait()我想知道在这里使用同步是否有意义,因为我已经使用了AtomicInteger?p.s. 我确实有解锁方法的后期。notify()
添加回答
举报
0/150
提交
取消