gpt4 book ai didi

Java:大集合和并发线程

转载 作者:行者123 更新时间:2023-12-02 08:45:23 26 4
gpt4 key购买 nike

我面临这个问题:我有很多线程(1024)访问一个大集合 - Vector。问题:是否可以对此做一些事情,让我可以对其进行并发操作,而不必同步所有内容(因为这需要时间)?我的意思是,像Mysql数据库一样工作,你不必担心同步和线程安全问题。 Java中有类似的集合吗?谢谢

最佳答案

Vector 是一个非常古老的 Java 类 - 早于 Collections API。它会同步每个操作,因此您不会有任何运气尝试加速它。您应该考虑重新编写代码以使用 ConcurrentHashMap 或 LinkedBlockingQueue 之类的东西,它们针对并发访问进行了高度优化。

如果做不到这一点,您提到您想要类似于数据库的性能和访问语义 - 为什么不使用专用数据库或消息队列?他们可能会比您更好地实现它,并且您需要编写的代码更少!

[编辑]鉴于您的评论:

all what thread does is adding elements to vector 
(only if num of elements in vector = 0) &
removing elements from vector. (if vector size > 0)

听起来很像您应该使用更像队列而不是列表的东西!大小为 1 的有界队列将为您提供这些语义 - 尽管我会质疑为什么如果那里已经有东西就不能添加元素。当您有数千个线程时,这似乎是一个非常低效的设计。

关于Java:大集合和并发线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926751/

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