问题遇到的现象和发生背景
使用Netty开发了一个功能上类似聊天室的程序,使用一个Hashmap来存储当前所有在线的客户端以实现单独给特定客户端发消息的功能。
结果有一天突然发现程序不能用了,检查了好长时间,最后发现Hashmap里的channel值发生了改变
客户端刚刚加进去时的Hashmap是这样的:
{192.168.0.15:40476=[id: 0x1a17988f, L:/192.168.0.15:18080 - R:/192.168.0.15:40476]}
但是当客户端掉线时,Hashmap无法删除掉这一项,变成了这样:
{192.168.0.15:40476=[id: 0x1a17988f, L:/192.168.0.15:18080 ! R:/192.168.0.15:40476]}
感觉就是因为channel改变了,导致删不掉,为什么channel会变成这样子?