先看下线程的代码:
public void run() { Public.map.put(this.getId() + "", this);
Object obj;
QQPack pack;
MessageType packType; while (true) { try {
oos = new ObjectOutputStream(socket.getOutputStream());
ois = new ObjectInputStream(socket.getInputStream());
obj = ois.readObject();
if (obj instanceof QQPack) { pack = (QQPack) obj;
packType = pack.getType();

if (packType == MessageType.Login) {
User user = pack.getFrom();
ImDao dao = new ImDao(); User user2 = dao.checkUser(user.getId(), user
.getPassword()); if (user2.getId().equals(user.getId())) { pack = new QQPack();
pack.setType(MessageType.Login_Success);
pack.setFrom(user2);
sendMessage(pack); Public.map.put(user.getId(), this); // 验证成功后把id和对应的线程保存到map中, } else {
pack = new QQPack();
pack.setType(MessageType.Login_Fail);
sendMessage(pack);
} } else if (packType == MessageType.Logout) { }