【问题标题】:Letting a different thread handle process if another hasn't finished如果另一个线程尚未完成,则让另一个线程处理进程
【发布时间】:2017-04-17 19:30:03
【问题描述】:

我正在玩 quickfix,我有一个设计问题。

我在下面的函数中处理收到的消息:

void processFixMessage(Message message){
   //do stuff here
}

几乎有一定的机会,我处理(处理)消息的速度变慢了。 我的问题是,有没有办法处理这种情况, 如果我还没有完成一条消息并收到另一条消息,则不同 线程应该拿起并开始处理。

【问题讨论】:

  • 看起来您可能想考虑使用线程池,这样您就可以将消息分发到池中的线程。一旦线程完成消息,它就可以在池中再次使用。这允许您使用多个线程处理消息,下一个要问自己的问题是您要使用多少个线程?
  • 谢谢@RAZ_Muh_Taz..我会开始研究线程池

标签: java multithreading methods parallel-processing quickfixj


【解决方案1】:

你可以在你的 processFixMessage(Message message) 中跳线程。根据传入消息的速率和处理单个消息的时间,您可以选择要创建的线程数。 一种方法是创建一个包含 n 个线程的 ThreadPool 并将您的消息解析提交到该池。 您可以参考代码:https://www.journaldev.com/1069/threadpoolexecutor-java-thread-pool-example-executorservice https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

您可以拥有基于机器的动态线程数: int cores = Runtime.getRuntime().availableProcessors();

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多