我写了一个Socket多线程的聊天室,服务端一启动会新建一个线程A监听客户端的连接,每个客户端连上来后服务端就起一个新的线程不停的读客户端的数据,并放入一个ArrayList中。同线程A同时启动的还有一个线程B,它负责向所有的在线用户广播ArrayList中的消息。
在几十个客户端的时候没有问题。
我为了做个简单的压力测试,就写了个测试程序,根据设置数目创建多个线程,每个线程相当于一个客户端,并隔一个随机的时间后向服务端发送信息。如果我开启100个线程,这个时候还没有问题。当我加到200个线程的时候就不行了。我在广播线程的执行代码处设置断点发现一直没有执行到那里,当然,100个线程的时候是可以的。
线程都是独立的,不明白为什么会这样。
这个时候登录、退出都是正常的。很是奇怪。
请各位帮助,谢谢。还有就是内存和虚拟内存都用的特别大,到1000个线程的时候内存能用到400-500M,虚拟内存能达到1.5G左右。再加程序就崩溃了。