首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java多线程-6个线程还是30个线程?

Java多线程-6个线程还是30个线程?
EN

Stack Overflow用户
提问于 2013-10-07 13:30:25
回答 1查看 507关注 0票数 0

我正在开发一个多线程应用程序,它需要执行一些光学字符识别。该应用程序的要求是,它必须工作得非常非常快。

有一次,我不得不同时读6个不同的单词。所以我要做的是,启动6个线程,一个专门用来阅读每个单词的线程。

但是,我想知道我是否应该更进一步,在一个单词中为每个字符启动一个线程。例如,如果我有6个单词,每个单词大约有5-6个字符,这就意味着30-36个线程(可能高达50-70个线程,用于更长的单词)。

要处理每个字符,似乎需要10-30毫秒,每个字总共需要200-300毫秒。(我需要把它降低到每字100毫秒或更少)。

哪种策略能给我更好的表现?每个字一个线程,还是每个字符一个线程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-07 13:35:14

哪种策略能给我更好的表现?每个字一个线程,还是每个字符一个线程?

答案在很大程度上取决于您的硬件架构和正在进行的实际处理。您的处理是否完全受限于CPU,还是有任何日志记录或其他IO?回答这个问题的最好方法是进行性能运行,尝试各种不同的线程设置,并进行多次测试,看看哪个线程做得更好。为了获得最准确的结果,您的测试运行时间应该比几秒钟长得多,以排除JIT和其他Java初始化。

还有几个想法:

  • 正如@Sotirios和其他人所提到的,只要抛出更多的线程来解决问题,实际上可能会因为上下文切换开销而使其运行得更慢。
  • 您应该使用一个ExecutorService线程池,这样您就不会每次都分叉和收获线程。线程启动/关闭不是一个不重要的进程。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19226234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档