在单独的线程中创建 ServerSocket?
2022-09-01 15:24:52
我在应用程序中使用 a 时遇到问题。ServerSocket
我正在应用程序的构造函数中创建 。套接字的构造函数调用该方法来等待客户端连接。ServerSocket
accept()
问题是该方法正在冻结我的整个应用程序,直到客户端连接。所以我想问一下,除了在单独的线程中创建整体之外,是否有其他方法,即及其方法的构造函数在我的主应用程序旁边调用?accept()
ServerSocket
ServerSocket
accept()
编辑:
感谢 Olivier 的建议,将 .accept 放入可运行状态并创建一个线程池来处理客户端连接。
这就是我现在的代码:
public void start(){
final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10);
Runnable serverTask = new Runnable() {
@Override
public void run() {
try {
serverSocket = new ServerSocket(port);
while (true) {
Socket clientSocket = serverSocket.accept();
objectout = new ObjectOutputStream(clientSocket.getOutputStream());
clientProcessingPool.submit(new ClientTask(clientSocket,objectout));
}
} catch (IOException e) {
System.err.println("Accept failed.");
}
}
};
一切都很好!谢谢!