多个socket接收数据,5分钟左右cpu飙至100%.
小弟遇到个问题,急需解决,望大家帮帮忙看看.写了一个程序,在启动一个线程后,在里面根据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) {
}
}
}
--------------------编程问答--------------------
你的线程会结束么?还是就这样持续不断的网上增长?直到后来CPU全部浪费在切换线程上?
--------------------编程问答--------------------
是的,你编写的线程一直在运行,可以通过关闭或退出的时候释放资源。
--------------------编程问答--------------------
另外,请用线程池.
补充:Java , Java相关