吐血求教!

qq_pride 2002-01-25 03:54:21
用JAVA编了一个网络程序,客户端连接服务器的某一端口,获得该端口的数据,由于所得的数据随时可能更新,所以要一直连接该端口.虽然已经实现了这个功能,可是却发现执行时CUP使用率是100%,虽然能用,但感觉很不爽,不知有没有高手知道解决的办法?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_pride 2002-01-25
  • 打赏
  • 举报
回复
有一定道理,先给分,我去试试,先谢各位了!
wangtaoyy 2002-01-25
  • 打赏
  • 举报
回复
Thread.sleep(1000)
wangtaoyy 2002-01-25
  • 打赏
  • 举报
回复
public static void main(String[] args){
ClientListener c=new ClientListener();//声明一连接实例
c.setVisible(true);//该实例中有Frame,所以......
long t=System.currentTimeMillis();//得到当前时间
t=t+1000;

while(true){
try{Thread.sleep(t);}catch(Exception e){}

if(!c.getServerMessage().equals(""))//判断连接所得数据是否为""
c.setTextAreaContent(c.getServerMessage());//显示数据
else c.setTextAreaContent("未能连接到服务器,请稍候...");//否则....
t=t+30000;//30秒连一次
}


}
cherami 2002-01-25
  • 打赏
  • 举报
回复
楼上有理!
oldcat0076 2002-01-25
  • 打赏
  • 举报
回复
你要让你的线程执行一段时间就sleep一段时间以释放cpu资源
qq_pride 2002-01-25
  • 打赏
  • 举报
回复
代码太多,主要问题在这儿:
public static void main(String[] args){
ClientListener c=new ClientListener();//声明一连接实例
c.setVisible(true);//该实例中有Frame,所以......
long t=System.currentTimeMillis();//得到当前时间
t=t+1000;

while(true){
if(System.currentTimeMillis()>t){//当当前时间大于t所指时间时,连接服务器
if(!c.getServerMessage().equals(""))//判断连接所得数据是否为""
c.setTextAreaContent(c.getServerMessage());//显示数据
else c.setTextAreaContent("未能连接到服务器,请稍候...");//否则....
t=t+30000;//30秒连一次
}
}

}
skyyoung 2002-01-25
  • 打赏
  • 举报
回复
代码问题嘎!
hyhong_h 2002-01-25
  • 打赏
  • 举报
回复
看看代码。

62,614

社区成员

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

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