1,线程锁
2件事情不能同时执行的时候,就要用到线程锁,防止多线程抢线,而造成程序的逻辑错误。
public static Object object;
// 加锁,括号中可以用类名.Class,或者类中的同一个对象,来确定多个锁的一致性
synchronized (Object.class) {
//执行语句
}
2,聊天窗口中好友互发消息
设计思路:
(1)在服务器创建一个map集合,用于保存上线用户的ID号,socket
(2)聊天窗口的发送按钮中添加监听,获得用户需要发送消息的请求
(3)聊天窗口中选择需要发送好友的ID号,将自己的ID,好友的ID,以及要发送的数据发送的服务器端
(4)服务端获取到聊天信息,解析
(5)好友如果不在线,服务器端则给发消息的客户端发送“对方不在线的提示”
(6)好友如果在线,服务器端将消息发到好友ID对应的socket的输出流中,好友的socket的输入流接收到聊天信息,好友的客户端负责解析,显示在聊天窗口中