问题1:
  线程运行的时候有必要判断是否为当前线程么?比如:
  public class Clock extends Applet implements Runnable{
    private Thread clockThread=null;
    public void start(){            //Applet starting....
       if(clockThread==null){
            clockThread=new Thread(this,"Clock");
            clockThread.start();
       }
    }
    public void run(){
       Thread myThread=Thread.currentThread();
       while(clockThread==myThread){            //这里的这个判断有必要么?
           repaint();
           try{
               Thread.sleep(1000);           //这是要哪个线程sleep?
           }
        }
    }
    ......
 }问题2:
   public class c1{
       static{
           ....       //初始化
       }
   }

   public class c1{
       public c1(){
            ....      //初始化
       }
   }
有什么区别啊?

解决方案 »

  1.   

    我来回答你第二个问题吧static{
         ...
    } //静态初始化第一次创建对象会执行,以后都不再执行。
      

  2.   

    1
    要不要判和程序有关
    Thread.sleep(1000); 那个线程调用,那个线程sleep2
    static block是类被load是被执行(不一定是非得创建实例)
    而构造函数里当然只有new实例时才执行
      

  3.   

    static属于类
    而构造的属于实例
      

  4.   

    那第一个问题中,clockThread==myThread有必要么?我觉得既然是写给clockThread运行的run()代码块,为什么还要判断是不是它来调用么?