San*_*ari 3 java events swing dispatch
我有一个与设计相关的问题,我正试图找到答案.
这是场景.
假设您希望由于用户输入而做一些昂贵的(耗时的)(例如从某个数据库加载大量数据,读取大文件).强烈推荐的方法是在单独的线程中完成耗时的工作,永远不会阻止EDT,否则GUI将无法响应.
但是有些情况下,除非后台任务完成,否则不应向GUI提供输入.在我的特定情况下,只有在后台工作完成后,我才能确定哪些GUI元素应该可见并启用/禁用.只有那些应该可见和启用的GUI元素才应该响应用户输入,否则在我的特定情况下行为可能是不可预测的.
这就是我正在做的处理这种情况.
第1步:在我即将开始耗时的操作之前.
第2步:在后台线程中执行耗时的操作.后台线程有一个finally块,它在作业完成时通知事件线程(由于错误而完成或中止).
第3步:
这是处理这种情况的正确方法吗?
你们推荐什么?