日期:2014-05-20  浏览次数:20704 次

GUI的线程安全性问题
在jdk5.0中   sun为了保证从事件分派线程之外的一个线程上创建GUI代码,推荐使用SwingUtilties类定义的两个方法:invokeAndWait()或invokeLater(),比如:
import   java.awt.*;
import   javax.swing.*;
public   class   JLabelDemo   extends   JApplet{
    public   void   init()
        try{
                SwingUtilites.invokeAndWait(
                      new   Runnable   (){
                      public   void   run(){
                              makeGUI();
                                                            }
                                                                    }
            );
}               catch   (Exception   e){
                        System.out.println( "Can 't   create "   +   e);
}
}
          private   void   makeGUI(){
                ImageIcon   ii   =   new   ImageIcon   ( "xxx.gif ");
                JLabel   jl   =   new   JLabel( "France ",ii,   JLabel.CENTER);
                add(jl);
      }
}            
_____________________________________________________________
请问能否写成   :
    Synchronized     private   void   makeGUI(){  
    同时不用   nvokeAndWait()               ???/

------解决方案--------------------
invokeAndWait()或invokeLater()是分派线程和线程同步不是一个概念~
请问能否写成 :
Synchronized private void makeGUI(){
同时不用 nvokeAndWait() ???/
你自己去实现一个线程去完成这个功能也可以,但是你自己要达到这两个提供的方法的功能不觉得麻烦吗?还有你加Synchronized 干社么?难到有多个对象会同时访问这个方法吗
既有之则用之,何必重复发明轮子呢