9.2. 解决和倾听显示进度


当用户等待某个解决方案时,当解决问题时,可能需要等待几分钟或几小时后才会收到结果。为确保一切顺利的用户,通过显示最佳解决方案以及目前获得的最佳分数来显示进度。

流程

  1. 要处理中间最佳解决方案,请使用 solveAndListen(…​)

    public class TimeTableService {
    
        private SolverManager<TimeTable, Long> solverManager;
    
        // Returns immediately
        public void solveLive(Long timeTableId) {
            solverManager.solveAndListen(timeTableId,
                    // Called once, when solving starts
                    this::findById,
                    // Called multiple times, for every best solution change
                    this::save);
        }
    
        public TimeTable findById(Long timeTableId) {...}
    
        public void save(TimeTable timeTable) {...}
    
        public void stopSolving(Long timeTableId) {
            solverManager.terminateEarly(timeTableId);
        }
    
    }

    此实施使用数据库与 UI 通信,后者轮询数据库。更高级的实施将最佳的解决方案直接推送到 UI 或消息传递队列。

  2. 用户对中间最佳解决方案满意且不想等待更长的时间,请致电 SolverManager.terminateEarly(problemId)
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部