多个socket接收数据,5分钟左右cpu飙至100%.

op_kin930 2012-10-15 11:47:19
小弟遇到个问题,急需解决,望大家帮帮忙看看.写了一个程序,在启动一个线程后,在里面根据socket请求,又启动了新的线程,有几个新的socket请求,就启动几个线程进行数据接收和处理,这样做可以么?为什么跑5分钟左右cpu就100%了..急需解决.谢谢


/**
* 仪器数据处理线程 每一个socket请求过来认为是一个仪器,一个仪器开一条线程
* 首先启动连接仪器监听线程
* 当有socket请求时,启动仪器数据处理线程,除非两边手动断开,否则不会中断
*/
@Override
public void run() {
time.schedule(new LabDeviceListener(loader), 3000, 5000);
while (!this.isInterrupted()) {
try {
Socket socket = serverSocket.accept();
if (null != socket) {
CreateObject co = new CreateObject(socket, loader);
co.setDaemon(true);
co.start();
}
} catch (IOException ex) {
}
}
}
...全文
205 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
想喝咖啡的貓 2012-10-15
  • 打赏
  • 举报
回复
另外,请用线程池.
bauterujj 2012-10-15
  • 打赏
  • 举报
回复
是的,你编写的线程一直在运行,可以通过关闭或退出的时候释放资源。
MiceRice 2012-10-15
  • 打赏
  • 举报
回复
你的线程会结束么?还是就这样持续不断的网上增长?直到后来CPU全部浪费在切换线程上?

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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