当前位置: 技术问答>java相关
java线程中如何降低CPU的占用率?我这几个线程会不会死锁?
来源: 互联网 发布时间:2015-05-06
本文导语: 我做了个Socket客户端程序,有三个线程 1个不停地发送规定数据给服务器端 使用到socket输出流 1个不停地监控来到的信息并回复处理 使用到socket输入输出流 1个是接收本地输入信息,并将其发送给服务端 ...
我做了个Socket客户端程序,有三个线程
1个不停地发送规定数据给服务器端 使用到socket输出流
1个不停地监控来到的信息并回复处理 使用到socket输入输出流
1个是接收本地输入信息,并将其发送给服务端 使用到socket输出流
我执行后cpu占用达到100%,这样肯定不行,该怎么优化好啊?
另外,3个线程都用到socket输出流,会不会造成传输给服务端的信息出错或者叠加还是死锁?
大牛请帮忙解释一二。
分不多,请谅解
1个不停地发送规定数据给服务器端 使用到socket输出流
1个不停地监控来到的信息并回复处理 使用到socket输入输出流
1个是接收本地输入信息,并将其发送给服务端 使用到socket输出流
我执行后cpu占用达到100%,这样肯定不行,该怎么优化好啊?
另外,3个线程都用到socket输出流,会不会造成传输给服务端的信息出错或者叠加还是死锁?
大牛请帮忙解释一二。
分不多,请谅解
|
如果3个线程公用一个socket端口,像你这种情况,我还没有碰到过。
应该会出现同时执行发送的情况
但是3个发送信息应该不会交错。因为Socket发送是发送完一条再发送下一条的,所以不用担心信息出错。只不过,服务器端接收可能会同时接收到几条信息的组合。
其它相关具体处理你自己看着办吧。
应该会出现同时执行发送的情况
但是3个发送信息应该不会交错。因为Socket发送是发送完一条再发送下一条的,所以不用担心信息出错。只不过,服务器端接收可能会同时接收到几条信息的组合。
其它相关具体处理你自己看着办吧。
|
在三个线程的while(true)循环中你是怎么处理的?你可以在循环尾sleep一会儿使线程让出cpu,然后再继续循环。
如果第一个线程是"不停地发送规定数据给服务器端"那第二,三个线程还有机会运行吗?三个线程共用一个端口。不知道你的这三个线程关系的什么?
如果第一个线程是"不停地发送规定数据给服务器端"那第二,三个线程还有机会运行吗?三个线程共用一个端口。不知道你的这三个线程关系的什么?