Runable runable=new Runable(){
  public void run() {
     ...
  }
};可以通过下面方式启动线程
1.
Thread t=new Thread(runable);
t.start();
2.
SwingUtilities.invokeLater(runable);
3.
java.awt.EventQueue.invokeLater(runable);这三种有什么区别了?

解决方案 »

  1.   

    建议你自己看看JDK的源代码!比如第二个内部是调用的第三个
    而第一个是最后必须要调用的代码
      

  2.   

    第一个用于并发任务。
    第二个和第三个一样,用于和AWT/Swing UI逻辑交互。
    第一个是在新的线程里运行,
    后面的是在AWT/Swing的用户线程里运行。
      

  3.   


    大概是这样第一个是用于多线程,这些线程需要用户控制第二个和第三个是因为Swing不是线程安全的,因此弄了个工具类,相当于打补丁。。