目的:在界面上需要用线程去处理一个逻辑,不影响主程序
我经常用这种方式:
new Thread(new Runnable()
    public void run() {   
        ...
    }   
).start();发现别人都是这样写swing线程去处理一个逻辑的
SwingUtilities.invokeLater(run);
看了API,没完全明白两者有区别不,后者有什么好,谢谢 明早结贴

解决方案 »

  1.   

    swing为了安全使用SwingUtilities.invokeLater 如下方法,这样在main方法中即主线程里所有的UI操作都放到了swing线程里,包括后边程序里开启的表格,按钮事件都是没问题的。
     public static void main( String[] args ){   
     SwingUtilities.invokeLater( new Runnable()
      {
      public void run()
      {
      MainFrame w = new MainFrame();
      w.setVisible( true );
      }
      } );}
      

  2.   

    new Thread的方法,开了一个新的线程,根据Swing的官方规范
    从Swing主线程以外的线程,对Swing的界面进行操作更新,是不安全的而SwingUtilities.invokeLater是把你要进行的操作,
    排进Swing主线程的事件序列中
    由Swing主线程依次处理,这样的做法是安全的,
    同时也能达到你需要通过另一个线程完成的效果