比如说我已经定义了一个类public class MyThread extends Thread,那么我想建立一个该类的对象的数组应该怎么操作,我这样写程序就报错了,不知道是什么原因?
这是我的main
public class Main {
    private static int i = 0;
    private static MyThread player[];
    public static void main(String[] args) throws Exception 
    {
        
        ServerSocket ss = new ServerSocket(5555);
        while(true)
        {
            Socket s = ss.accept();
            player[i] = new MyThread(s, i);//报错语句 
            player[i].start();
            i++;
            //client[i] = MyThread(s);
        }}
}

解决方案 »

  1.   

    你应该使用多线程框架类,如Executors提供了多个可以得到线程池的方法。
      

  2.   

    player[i] = new MyThread(s, i);//报错语句 
    player是null吧,player[i]是什么?
      

  3.   

    MyThread有提供相应的构造方法吗? public MyThread(Socket s, int i)
    {
    //num = i;
                    //socket = s;
    }这里的i不需要是static的吧。在while循环外定义就好了。
      

  4.   


    //while(true) 
    //        { 
    //            Socket s = ss.accept(); 
     //           player[i] = new MyThread(s, i);//报错语句 
     //           player[i].start(); 
    //            i++; 
     //           //client[i] = MyThread(s); 
    //        } 
    //最好改下,改成
    //Socket s = ss.accept(); 
    //这时s有可能为null,虽然jdk里说是获得socket,但实际上不是,我以前也碰到过这样的问题
    Socket s = null;
    while((s=ss.accept)!=null){
     player[i] = new MyThread(s, i);//报错语句 
                player[i].start(); 
                i++; }
      

  5.   

    1、new Thread(s, i); s是Socket类型的,Thread应该没有这样的构造方法吧?
    2、Thread player[];没有定义大小就使用了