在一个线程里,无限循环响应操作while(true)
{rrstr=in.readUTF()
Frame1.refresh();
语句3;
语句4;
}我希望实现的是,如果in.readUTF()暂时没有从流中读到东西,就先执行后面的内容,然后在下一次
while循环里再继续读.然而调试时发现 in.readUTF()处于死等状态,不读出东西不往后执行.
改写成: if(!"".equals(rrstr=in.readUTF()))Frame1.refresh();
else{语句3;语句4;}情况也是一样,虽然读到空串,但仍无往下执行,一直在rrstr=in.readUTF()处死等请教解决思路,谢谢大虾.
这个是阻塞式调用,你说的功能可以用NI/O里面的非阻塞式调用实现。
while(true)//一直监听服务器端信息
{ try{sleep(2000);} //休眠2秒,每2秒检查一次是否有客户端信息发来,检查得太频了死机
catch(InterruptedException e){System.out.println(e);}
//如果没消息那么线程继续睡觉
if((strLineInC=in.readLine())!=null)
{if(strLineInC.equals("88"))
{ DisconnectC();}
else{
Tongxincilent.ta1.append("\n"+"服务器>>"+strLineInC+" ("+h+":"+m+":"+s+")");
strLineInC=null; }
}
}}catch(IOException e){System.out.println("出错!"+e);}
用个线程每隔几秒时间检查1次,如果你用while一直循环,那检查频率超快,程序会没有响应的
以前我作课设socket聊天程序的时候也碰到这个问题,上面是解决的代码,希望对你有帮助