我有一个wordCount(CharacterReader charReader)
函数接受字符流,将它们转换为单词。
我还有一个Collection<CharacterReader> characerReaders
,包含多个字符流。集合中的读者数量可能会有所不同,我想从所有流中阅读并计算所有单词的数量。
我对线程有点困惑,找不到任何与此类似的示例。 我本质上希望多个线程将它们的单词输出到 SortedMap 中,这样我就可以获得实时总单词数。
我该如何去做呢?
谢谢
最佳答案
- 如果您打算让多个线程写入映射,则需要使用
ConcurrentSkipListMap
,它既是SortedMap
又是ConcurrentMap
>. - 您可以为集合中的每个
CharacterReader
创建一个Runnable
,它调用wordCount
函数(该函数访问前面描述的 map )。 - 创建
Runnable
后,您可以创建一个ExecutorService
(例如使用Executors.newCacheThreadPool()
),将所有Runnable
并等待它们完成(请参阅ExecutorService
类的 javadoc 中的示例)。
您还可以在将Runnable
发送到ExecutorService
之前创建它们。
关于java - 构造多个线程将单词输出到 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549907/