gpt4 book ai didi

Java下载并发数据

转载 作者:行者123 更新时间:2023-12-02 08:32:13 25 4
gpt4 key购买 nike

我正在开发一个应用程序,可以下载城市中不同地点的 map 图 block 。为此,我为每个位置创建一个线程,在其中选择图 block 并创建一个线程来下载每个图 block 。

那么,问题是如何避免为线程池中已存在的图 block 创建线程。

不应只检查文件是否存在,因为该图 block 的线程可能已经存在(其他地方已经需要该图 block ),但文件尚未创建-

有什么想法吗?谢谢

最佳答案

您可以使用 ConcurrentHashMap<Tile, Thread>您在其中存储所有下载器线程。

您可以在启动线程之前将其添加到 HashMap 中,并在销毁它之前将其删除。当然,您将检查 HashMap 以查找特定的 Tile在为该图 block 启动线程之前。

这是我想到的最简单的解决方案,它很容易实现,但您必须仔细阅读如何使用这种 HashMap 来保证并发性而不存在一致性问题。

您还可以使用 hashmap 的“设置”功能

Collections.newSetFromMap(new ConcurrentHashMap<Tile,Thread>())

这样你就不会有任何关联Tile -> Thread但只是一个您可以执行 set.contains(tile) 的结构检查某个图 block 是否已被某个线程调度。

关于Java下载并发数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3036612/

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