利用如下方法仍旧对有些请求不能及时回复,请教高手指点一种高效的线程管理方法public void run() {
try {
/* 创建工作空间 */
Server work_space = new Server();
//开始监听端口
server=new ServerSocket(port);
thread_pool = Executors.newFixedThreadPool(1000);
while(true) {
//获取当前的通信
socket=server.accept();
work_space.socket = socket;
thread_pool.submit(work_space);
}
} catch(Exception e) {
e.printStackTrace();
}
}
/***************************************************
* <B>内部类</B>
* <PRE>
* 实现对服务器制定端口的监听的逻辑业务
* @2008/04/14
* </PRE>
* @version $Revision: 1.1 $ $Date: 2008/04/14
* @author
****************************************************/
class Server implements Runnable{
//通讯类
Socket socket = null; /**
* 实现接口方法,实现逻辑业务
* @param String clientMes
* @return String[] message
*/
public void run() {
try{
//读取准备
System.out.println("连接上了!正在读取数据");
/* 接收客户端的信息 */
String clientMes = null;
/* 负责接受 */
byte read_msg[] = new byte[600];
InputStream input = socket.getInputStream(); System.out.println(socket.getPort());
//读取数据
input.read(read_msg);
// 组装数据
StringBuffer ipphone_mes = new StringBuffer();
for(int i=0;i<read_msg.length;i++){
if(read_msg[i]!= 0){
char c = (char)read_msg[i];
ipphone_mes.append(c);
}
}
//读取数据的字符串形式
clientMes = ipphone_mes.toString();
System.out.println("Client = " + clientMes);
//获取当前操作类型,并做相应处理
if(!clientMes.trim().equals("")){
getCurrentStepThenDisposal(socket,clientMes);
} //input.close();
//socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
try {
/* 创建工作空间 */
Server work_space = new Server();
//开始监听端口
server=new ServerSocket(port);
thread_pool = Executors.newFixedThreadPool(1000);
while(true) {
//获取当前的通信
socket=server.accept();
work_space.socket = socket;
thread_pool.submit(work_space);
}
} catch(Exception e) {
e.printStackTrace();
}
}
/***************************************************
* <B>内部类</B>
* <PRE>
* 实现对服务器制定端口的监听的逻辑业务
* @2008/04/14
* </PRE>
* @version $Revision: 1.1 $ $Date: 2008/04/14
* @author
****************************************************/
class Server implements Runnable{
//通讯类
Socket socket = null; /**
* 实现接口方法,实现逻辑业务
* @param String clientMes
* @return String[] message
*/
public void run() {
try{
//读取准备
System.out.println("连接上了!正在读取数据");
/* 接收客户端的信息 */
String clientMes = null;
/* 负责接受 */
byte read_msg[] = new byte[600];
InputStream input = socket.getInputStream(); System.out.println(socket.getPort());
//读取数据
input.read(read_msg);
// 组装数据
StringBuffer ipphone_mes = new StringBuffer();
for(int i=0;i<read_msg.length;i++){
if(read_msg[i]!= 0){
char c = (char)read_msg[i];
ipphone_mes.append(c);
}
}
//读取数据的字符串形式
clientMes = ipphone_mes.toString();
System.out.println("Client = " + clientMes);
//获取当前操作类型,并做相应处理
if(!clientMes.trim().equals("")){
getCurrentStepThenDisposal(socket,clientMes);
} //input.close();
//socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
解决方案 »
- 菜鸟,求前辈解决空指针异常问题
- JAVA利用SAX如何解析html提取里面的超链接
- 帮我改改代码,谢谢!
- 关于DJ Native Swing - SWT的疑问
- 请教为什么body里的JavaScript代码得不到执行?
- 新建的JAVA[169623]群,希望大家加入一起讨论JAVA技术
- 新手!请教!谢谢大家!
- 开发一个CRM系统,.NET和JAVA开发那个好一些
- 我想在java里调用windows API,应该怎么做
- 关于java串口通信的rxtx包
- this("Employee #" + nextId, s)里的参数"Employee #" + nextId这样写什么意思?
- 求助!java虚拟机问题
while (true) {
Socket socket = serverSocket.accept();
Thread handler = new Handler(socket);
System.out.println("服务端接受到连接...");
handler.start();
}