【发布时间】:2012-10-10 01:09:30
【问题描述】:
我需要编写一个通过使用启发式算法来解决复杂问题的 Web 服务。只要 POST 请求中指定的时间已经过去,算法就会运行(即传递 timeAllowance=60 将确保启发式算法在 60 秒后停止并返回找到的最佳解决方案)。
启发式算法必须在多个线程上运行才能利用所有服务器内核。在算法执行期间,这些方法必须相互“通信”。每个线程将运行启发式算法,并在一定时间后,线程将传达他们找到的解决方案,如果允许的时间尚未到期,则以不同的初始人口运行新的循环。总结:
- 生成初始种群(几乎是随机的)
- 启动启发式算法线程,每个线程都将人口作为输入
- 一定时间后,终止线程并将线程发现的新种群与“控制器实体”通信
- 做一些逻辑推理并根据在第 2 点启动的线程的结果生成新种群
- 如果允许的时间尚未到期,请返回到第 2 点的新人口。否则退出
我的问题是:您将如何使用 Spring MVC 构建代码?
作为测试,我尝试在服务方法中启动 10 个线程并从控制器调用该方法(自动装配服务)。线程所做的一切都是休眠 60 秒。我原以为 HTTP 请求会等待所有线程终止(即大约 60 秒),但实际上它会立即响应。
非常感谢任何帮助。
谢谢!
【问题讨论】:
标签: java multithreading spring spring-mvc