java – Lock写入HashMap
发布时间:2020-12-15 04:21:35 所属栏目:Java 来源:网络整理
导读:我有一个异步更新的HashMap.我需要执行涉及地图的操作,这需要地图在任务期间不改变状态,例如基于地图内容对值进行排序. 有没有一种方法可以锁定一个映射,以便只发生阻塞所有写入线程的读取,因此在解锁映射后,所有的修改都会发生?锁需要能够在我使用Concurre
我有一个异步更新的HashMap.我需要执行涉及地图的操作,这需要地图在任务期间不改变状态,例如基于地图内容对值进行排序.
有没有一种方法可以锁定一个映射,以便只发生阻塞所有写入线程的读取,因此在解锁映射后,所有的修改都会发生?锁需要能够在我使用ConcurrentHashMap的同时允许多个线程写入,并且我想利用ConcurrentHashMap的好处. 解决方法
ConcurrentHashMap不提供方法调用之间的线程安全性,仅在单个调用内.因此,如果要在执行操作时保持映射不变,则需要使用自己的锁将调用包装到地图中.
例如,使用ReadWriteLock: ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); 当您更新地图时 readWriteLock.writeLock().lock(); // do the updates readWriteLock.writeLock().unlock(); 当你想从地图上读取 readWriteLock.readLock().lock(); // perform the read and its operations that rely on the map not changing readWriteLock.readLock().unlock(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |