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