我正在玩 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/