这是使用Java的序列化机制的绝佳机会。你可以这样做(假设你捕获所有异常有关,这是为了简明扼要省略)
class ClientListeningThread {
ObjectInputStream in;
ObjectOutputStream out;
ClientListeningThread(Socket s) {
in = new ObjectInputStream(s.getInputStream());
out = new ObjectOutputStream(s.getOututStream());
}
public void run() {
while(true) {
ClientMessage message = (ClientMessage)in.readObject();
engine.addMessage(this,message); // add to the message queue, signifiying which listening thread to give the response to
}
}
public void send(ServerMessage message) {
out.writeObject(message);
}
}
您的邮件甚至可以在它们回调
类LoginMessage {
public final String username;
public final String password;
public LoginMessage(String username, String password) {
this.username = username;
this.password = password;
}
public void callback(ClientListeningThread thread, ServerProcessor engine) {
ServerMessage response = engine.attemptLogin(username,password);
thread.send(response);
}
}
而在你的发动机
while(!requests.isEmpty()) {
ClientRequest request = requests.poll();
ClientListeningThread = request.thread;
ClientMessage message = request.message;
request.callback(thread,this);
}
看不到序列化在这里发挥作用。另请参阅我的编辑。不管怎么说,还是要谢谢你。 – 2011-04-30 18:06:02