現在在做一個多線程與Socket配合的問題﹐現在在接受數據端老是過2到3個小時就有一條線程死掉﹐還有兩個類一個是界面啟動線程的﹐一個是對接收數據處理﹐這段程試是兩個死循環﹐外循環是不斷監聽是否有數據傳過來﹐內循環是在數據庫里搜索數據什么處理完并返回信息。望高手能給我點意見﹐不勝感激﹗ public void run()
{
try
{
 String readMess="";
 client=null;
                in=null;
                out=null;
                client =new Socket(ip,port);
                //client =new Socket("10.242.10.75",4660);
               System.out.println(line+"  CONNECTION OK!");
               out = new DataOutputStream(client.getOutputStream());
                in = new DataInputStream(client.getInputStream());
                flag=true;
while(true) 
{
          /*
          if(in.available()==0)
          {
           //break;
           continue;
          }
          */
     System.out.print(line);
     System.out.println(client.isConnected());
     readMess=in.readLine().trim();
     //System.out.println(readMess);
     if(readMess.equals("")||readMess==null)
     { 
      System.out.println("while end!");
          break;
     }
                         else
                        {
                           if(!client.isConnected())
                           {
                             System.out.println(line+" is no connection!");
                           }
                           id=trans.getID(readMess);
       strData=trans.getData(readMess);
       //System.out.println(id+"  data= "+strData);
       insert_RCV_Data(strData,id);
       int count=0;
       while(true)
                          {
                           int getflag=get_send_flag(id);
                           if(getflag==0)
                           {
                           sleep(150);
                           count++;
                           if(count==20)
                           {
                          
                                try 
        {
            Statement stmt=con.createStatement();
            String strsqlupdate="update SYS_DATA_CHANNEL set flag=4 where id="+id+" and flag=0";
            stmt.executeUpdate(strsqlupdate);
            stmt.close();
            
        } catch(Exception ex) 
        {
            System.out.println("errorUpdate : "+ex.getMessage());
        }
    break;
                           }
                           }
                           else if(getflag==1||getflag==2)
                           {
                           trans.sendData(out,strData,id,false);
                              this.data.insertElementAt("ID:"+id+"  Data:"+strData,0);
                              get_send_Data();
                              break;
                           }
                          }
                          
                        } 
            }
}
catch(Exception e)
{
System.out.println(ip+"  Thread run error :"+e.getMessage());
}
}