Thread與Socket阻塞

tomjie1981 2007-04-05 09:19:16
現在在做一個多線程與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());
}
}
...全文
252 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
eqxu 2007-07-25
  • 打赏
  • 举报
回复
设定timeout
约翰羊 2007-04-05
  • 打赏
  • 举报
回复
我帮你顶
tomjie1981 2007-04-05
  • 打赏
  • 举报
回复
怎么沒人回我啊﹗﹗﹗﹗﹗﹗﹗﹗
急死人了﹗

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧