ServerSocket
在我的应用程序中使用 a 时遇到问题。
我正在ServerSocket
我的应用程序的构造函数中创建。套接字的构造函数调用该accept()
方法等待客户端连接。
问题是该accept()
方法冻结了我的整个应用程序,直到客户端连接。所以我想问是否有一种替代方法可以ServerSocket
在单独的线程中创建整体,在我的主应用程序旁边调用 the 的构造函数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.");
}
}
};
一切运行良好!谢谢!