我才学多线程,有很多东西不懂,下面的程序不知道错在哪里,请高手指点一下,谢谢!
public class paixu 
{   public  int[] text;
    public  int n=text.length;    public paixu(int[] text)
       {
          this.text=text;
       }
    class insert extends Thread    //插入排序
       {   int i,j,temp;
  private int[] text;
           public insert(int[] text)
              {
this.text=text;
              }
           public void run()
     {   for(i=0;i<n-1;i++)
           {  temp=text[i+1];
     j=1;
     while(j>-1&&temp<=text[j])
        {   text[j+1]=text[j];
                              j--;
}
     text[j+1]=temp;
   }

 for(int i=0;i<n;i++)
               System.out.println(text[i]+"");
      }
 
 }
    class maopao extends Thread      //冒泡排序
{
    private int[] text;
    int i,j,flag=1;
    int temp;
    public maopao(int[] text)
      {
  this.text=text;
       }
    public void run()
       {  for(i=1;i<n&&flag==1;i++)
      {  flag=0;
          for(j=0;j<n-i;j++)
    {    if(text[j]>text[j+1])
  {   flag=1;
      temp=text[j];
      text[j]=text[j+1];
       text[j+1]=temp;
  }
    }
       }
 
  for(int i=0;i<n;i++)
      System.out.println(text[i]+"");

  }
 }
    public static void main(String args[])
{   int[] text={20,50,12,2,30};
    new paixu(text);
    (new insert(text)).start();
    (new maopao(text)).start();

}

}

解决方案 »

  1.   

    语法上就有好多错误啊-_-!(1):public int[] text;
    public int n=text.length;text数组还没有初始化,执行n=text.length会报空!
    因此n=text.length需要放到:public paixu(int[] text)
    {
    this.text=text;
    n=text.length;
    }
    里面(2)insert,maopao作为inner class,他们都不是Static(静态),因此,
    实例创建时需要主类的实例来创建,如下paixu thread = new paixu(text);
    ( thread.new insert(text)).start();
    ( thread.new maopao(text)).start();thread.new X(X为inner class);其他的你再调试吧~