java - 如果另一个线程尚未完成,则让另一个线程处理进程

标签 java multithreading methods parallel-processing quickfixj

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

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

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

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

最佳答案

您可以在 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();

关于java - 如果另一个线程尚未完成,则让另一个线程处理进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939803/

相关文章:

java - 在重试网络连接之间暂停

python - 如何为此方法编写单元测试

python - python pool.map 中的多线程引发 TypeError : object of type 'float' has no len()

java - Android游戏线程生命周期实现

java - 如何使用 math.random 重新随机化网格上的绘图

java - .method() 没有引用

java - 确定导致 Google Dataflow 作业失败的特定输入数据

java - Spring boot Hibernate 一对多关系

java - 如何使用 getElementsByTagName 有选择地检索 ELEMENTS

java - 如何从父类(super class)调用子类方法?