下边是我一个实际项目中的代码,实现一个线程的run(),socket服务器端的,
public void run() {
try {
//监听用户连接
socket = server.accept();
outStream = new DataOutputStream(socket.getOutputStream());
inStream = new DataInputStream(socket.getInputStream());
//服务器准备好,可以进行通讯
System.out.println("SocketListener: the Socket Client connected !"); while (true) {
//读取从客户端发送的信息
String message = inStream.readUTF(); //生成线程处理收到的消息
MessageProcessor mp = new MessageProcessor(comminfo, message);
mp.start(); //System.out.println("The server receive String:"+str); //将信息重新向客户端发送
outStream.writeUTF("The Socket Server has got your message !"); }
} catch (IOException ex) {
System.out.println(
"SocketListener: the Socket Client disconnected !");
this.run();
} catch (Exception ex) {
System.out.println("SocketListener: " + ex.toString());
this.run();
}
}
public void run() {
try {
//监听用户连接
socket = server.accept();
outStream = new DataOutputStream(socket.getOutputStream());
inStream = new DataInputStream(socket.getInputStream());
//服务器准备好,可以进行通讯
System.out.println("SocketListener: the Socket Client connected !"); while (true) {
//读取从客户端发送的信息
String message = inStream.readUTF(); //生成线程处理收到的消息
MessageProcessor mp = new MessageProcessor(comminfo, message);
mp.start(); //System.out.println("The server receive String:"+str); //将信息重新向客户端发送
outStream.writeUTF("The Socket Server has got your message !"); }
} catch (IOException ex) {
System.out.println(
"SocketListener: the Socket Client disconnected !");
this.run();
} catch (Exception ex) {
System.out.println("SocketListener: " + ex.toString());
this.run();
}
}
好一点的方法是把通信内容封装成类,在建立连接的线程里用一个synchornizedList保存
而通信仍然由建立连接的线程自己负责,这样可以避免同步问题。
如果你给出你的线程和类的设计结构的话,大家应该能给出具体的建议
谁能帮我搞定他?
你能说说你觉得这种方法哪里不好吗?
不知道是不是哦。