Java使用单独的任务异步同步两个集合中的项

Java使用单独的任务异步同步两个集合中的项,java,spring-boot,collections,synchronization,Java,Spring Boot,Collections,Synchronization,我需要一些能够同步两个集合中的项目的高效代码。我的意思是,当一个项目被添加到第一个集合时,它也应该被添加到第二个集合,但是将项目添加到第二个集合应该异步完成(例如,通过使用Spring Boot scheduling task API循环调用的单独任务),以便两个集合都包含相同的项目 假设只有添加新项目的可能性 这些同步应该是有效的,以便该算法能够在生产环境中工作。 两个列表的同步应最多需要几秒钟 你能帮忙吗 提前感谢我建议您在读取第二个收藏时注意同步的方向(最好是在第一个收藏中录制时,但显然这

我需要一些能够同步两个集合中的项目的高效代码。我的意思是,当一个项目被添加到第一个集合时,它也应该被添加到第二个集合,但是将项目添加到第二个集合应该异步完成(例如,通过使用Spring Boot scheduling task API循环调用的单独任务),以便两个集合都包含相同的项目

假设只有添加新项目的可能性

这些同步应该是有效的,以便该算法能够在生产环境中工作。 两个列表的同步应最多需要几秒钟

你能帮忙吗


提前感谢

我建议您在读取第二个收藏时注意同步的方向(最好是在第一个收藏中录制时,但显然这是不可能的)


使用易失性布尔字段向消费元素发送信号,并使用同步队列(通过第二个线程)?第二个线程将在循环中轮询。它们是列表吗?那个么元素移除呢?那个么第二个线程应该包含在无限循环中,并从第一个集合中获取新的项?在这种情况下,哪种集合实现最有效?根本没有删除功能:)@Thomas,如果没有删除,那么(假设两个集合都是列表),您可以在第二个线程中循环,检查集合大小差异,然后将
子列表添加到异步集合中。我不能谈论效率:没有足够的数据来说明数据更改的频率以及必须对集合元素进行何种访问。
Object get(Object key) {
    if (compareCollectionsBySize()) //it should be a simple, inexpensive operation
    {
        return duplicateCollection.get(key);
    } else {
        //we need synchronization
        //it all depends on the duration of the synchronization
        //and search costs for the original collection

        //in case fast synchronization
        synchronizeCollections();
        return duplicateCollection.get(key);
    }
}