【发布时间】:2018-12-09 15:02:39
【问题描述】:
我正在尝试将我的服务器配置为管理至少 3 个客户端,但是当我这样做时,即使在连接第一个客户端之前,我也会收到内存不足错误。我该如何改进它?在ThreadedEchoHandler() 中,我接受了客户端的请求和包含服务器必须做的所有事情的运行方法。
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");
}
}
【问题讨论】:
-
但是你在这里启动了无限数量的线程。
-
@Antoniossss 我用我接受请求的部分更新了问题。我应该把循环移到那里吗?
-
您应该接受循环并在传入连接时启动线程,而不是相反。现在你正在一次启动无限线程。难怪你的资源用完了。
标签: java multithreading sockets javafx runnable