SwingUtilities的invokeLater和invokeAndWait

参考:
http://blog.csdn.net/bzwm/article/details/3895381

参考作者的例子和解释。

补充:SwingUtilities.invokeLater并没有自动开户一个线程去处理,API:Causes doRun.run() to be executed asynchronously on the AWT event dispatching thread. This will happen after all pending AWT events have been processed.可知invokeLater还是在event dispatching thread上执行的,并且是排在最位一个执行的。因此界面会卡住。
我们可以另开一个线程("工作线程")来执行来处理数据,并且在这个线程中调用swingutilities来更新UI。
invokeLater不要有操作数据的操作,尽量只有更新UI的操作。
invokeAndWait是等更新UI结束后再执行“工作线程”

你可能感兴趣的:(swing)