我正在尝试配置我的服务器以管理至少3个客户端,但是当我这样做时,即使在连接第一个客户端之前,我也会收到内存不足错误 . 我怎样才能改进它?在 ThreadedEchoHandler()
中,我是接受客户端请求的部分,以及包含服务器必须执行的所有操作的run方法 .
public void initModel() throws IOException {
contenutoTextArea.append("Waiting for connections\n");
textarea.setText(contenutoTextArea.toString());
s = new ServerSocket(5000);
while (true) {
Runnable r = new ThreadedEchoHandler();
new Thread(r).start();
}
}
编辑:ThreadedEchoHandler的开始:
lass ThreadedEchoHandler implements Runnable {
private Socket incoming;
private String nomeAccount = "";
public void run() {
try {
incoming = s.accept();
} catch (IOException ex) {
System.out.println("Unable to accept requests");
}
}
1 回答
你应该在
while
循环发生的同一个线程中执行accept
,然后在有新的接受连接后,启动一个新线程:并修改
ThreadEchoHandler
以从外部获取其Socket
:当然你可以用各种方式组织它,比如
ThreadedEchoHandler
可以从构造函数启动它的线程,甚至也可以执行accept
,但同样,它必须在启动线程之前发生:然后循环可能是这样的: