Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中非常高效的稀疏向量库?_Java_Multithreading_Bigdata_Sparse Matrix_Performance - Fatal编程技术网

Java中非常高效的稀疏向量库?

Java中非常高效的稀疏向量库?,java,multithreading,bigdata,sparse-matrix,performance,Java,Multithreading,Bigdata,Sparse Matrix,Performance,我正在多线程Java环境中处理大数据,我需要一个可以使用的非常高效的稀疏向量库。有什么想法吗?我只需要它有一个超快速的向量加法。我使用的唯一操作是添加两个稀疏向量,但我将在共享哈希表上经常这样做。 所以哈希表中的每一项都是。我是这样做的: anotherVector = initVector() lock.acquire() wordVector = hashtable.get(word) wordVector = wordVector + anotherVector hashtable.put

我正在多线程Java环境中处理大数据,我需要一个可以使用的非常高效的稀疏向量库。有什么想法吗?我只需要它有一个超快速的向量加法。我使用的唯一操作是添加两个稀疏向量,但我将在共享哈希表上经常这样做。 所以哈希表中的每一项都是。我是这样做的:

anotherVector = initVector()
lock.acquire()
wordVector = hashtable.get(word)
wordVector = wordVector + anotherVector
hashtable.put(word, wordVector)
lock.release()
我需要添加任务非常快,这样我就可以为其他线程尽快释放整个哈希表资源


顺便说一句,如果对如何实现这一点有任何其他想法(例如,使用另一种数据结构或另一种设计),我很乐意听到。唯一的一点是,我需要它对英语维基百科来说是有效的

Java JDK中最有效的稀疏向量是
HashMap
。您可以考虑使用<代码> CONCURNESHASMAP 用于<代码>哈希表,而不是锁定整个结构。锁定密钥而不是像您当前所做的那样锁定整个
Map
是很常见的。@Boristeider我需要一个包含Hashmaps的ConcurrentHashMap是吗?因为对于语料库中的每个单词,我都有一个稀疏向量,所以我会有一个ConcurrentHashMap(String,HashMap)?另一点是,当我需要更新字符串的向量时,我获取它、更新它并将其放回原处。我想我需要在得到向量之前锁定密钥,直到更新它。是否可以在ConcurrentHashMap中锁定该特定密钥?是的,确切地说,是一个
ConcurrentHashMap
或其他什么。锁密钥的功能不是内置在
ConcurrentHashMap
中的,但是您可以很容易地在外部实现。我回答了一个问题,它演示了一种双映射密钥锁方法。您也可以使用密钥包装器。@BoristheSpider-yes。你的想法很好。我喜欢它。这似乎肯定会奏效。因此,我们为每个键创建一个锁,并将整个hashmap锁定在该特定的键锁上。谢谢你这个明智的想法。