1.public class CoreThread extends Thread {
      private static int i=0;
      public CoreThread() {
          super(""+ ++i);
          start();
      }
       .......
  }
//为什么i必须是static?否则就有"父类构造器调用之前不能引用它"错误.2.线程调度机制是抢占式的吗?3.如何线程可以同名,那么JAVA用什么来标识?thanks!

解决方案 »

  1.   

    1、因为i属于CoreThread对象,而此时还没有构造CoreThread ,所以不能引用。
      而static 不属于任何对象2、是3,猜想,你并不能通过构造的那个名字对线程做任何操作,只能通过引用来操作线程。jvm实际上并不是通过线程的名字来识别线程的。线程是用本地方法实现了。
     
    不知道对不对。
      

  2.   

    在构造方法中如果要调用 super 方法,必须是最开始的。因为此时自身的实例还不存在。
    线程是抢占的
    jvm不是通过线程的名字来管理线程的,这个名字可以随便处理。
      

  3.   

    //为什么i必须是static?
    -------------
    因为在父类构造函数装载之前,i还没有装载。所以用static来装载这个变量