java - 构造多个线程将单词输出到 map

标签 java multithreading

我有一个wordCount(CharacterReader charReader)函数接受字符流,将它们转换为单词。

我还有一个Collection<CharacterReader> characerReaders ,包含多个字符流。集合中的读者数量可能会有所不同,我想从所有流中阅读并计算所有单词的数量。

我对线程有点困惑,找不到任何与此类似的示例。 我本质上希望多个线程将它们的单词输出到 SortedMap 中,这样我就可以获得实时总单词数。

我该如何去做呢?

谢谢

最佳答案

  1. 如果您打算让多个线程写入映射,则需要使用 ConcurrentSkipListMap,它既是 SortedMap 又是 ConcurrentMap >.
  2. 您可以为集合中的每个 CharacterReader 创建一个 Runnable,它调用 wordCount 函数(该函数访问前面描述的 map )。
  3. 创建Runnable后,您可以创建一个ExecutorService(例如使用Executors.newCacheThreadPool()),将所有Runnable 并等待它们完成(请参阅 ExecutorService 类的 javadoc 中的示例)。

您还可以在将Runnable发送到ExecutorService之前创建它们。

关于java - 构造多个线程将单词输出到 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549907/

相关文章:

java - 在 Java 中总是在构造函数之后执行方法

java - WSDL 使用 - 使用什么工具?

java - Spring JPA - 连接非持久字段

java - Android 使用 Firebase Build APK 工作正常,但发布 APK 崩溃

.net - 线程池和发送电子邮件

java - 在 Quasar 中调度任务,无需生成新线程

java - 将 JLayeredPane 添加到 JPanel

java - 删除jsf spring hibernate primefaces集成中的一行

python - UDP 服务器线程化

java - 在调试工具 Netbeans 中单击 "stop"按钮时,多线程 java 应用程序输出了一个奇怪的结果