大家好我正在开发一个使用java swing和mssql 2005的聊天程序,我从中获取超过5个表的数据..
为了完成这项工作,我在java中使用了Timer,以便每隔2秒检查一次新消息..但问题是它会影响我的应用程序的性能和平滑度。
所以我尝试使用Thread增强了一些性能..有没有其他方法可以做到这一点,以便检查新消息和用户可用性将在一个部分完成,应用程序在其他部分顺利运行...?
答案 0 :(得分:3)
定时器是在后台执行定期任务的正确选择。在引擎盖下它使用一个单独的线程来运行任务,所以你不需要自己搞乱线程。 Swing应用程序的缓慢通常是由于事件调度线程(EDT)上的长时间运行任务。一旦你获得了更新UI的数据,你的计时器任务可能就是在EDT上放置一个Runnable。检查它的作用并确保它只更新UI,而不是在后台任务中完成其他工作。检查更新UI的效率。
请参阅Threads and Swing上的Java文档以及Improve Application Performance With SwingWorker上的这篇文章(最后一篇文章讨论的是SwingWorker而不是Timer,但是从EDT中取出工作的概念是相同的。)
如果您发布一些代码,我们可以更仔细地查明问题。