云服务器哪家好
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
首页
标签
serversocket
#
serversocket
关注
专栏文章
(7)
技术视频
(0)
互动问答
(1)
如何在一个单独的线程中创建ServerSocket?
1
回答
serversocket
、
客户端
、
连接
、
线程
当巨浪把
it
通常情况下,我使用N + 1个线程:一个用于ServerSocket,避免阻塞整个应用程序等待客户端连接; 和N个线程来处理客户端的请求,N是线程池的大小(我建议使用线程池来为每个客户端创建一个新线程)。 public class Server { public static void main(String[] args) { new Server().startServer(); } public void startServer() { final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10); Runnable serverTask = new Runnable() { @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(8000); System.out.println("Waiting for clients to connect..."); while (true) { Socket clientSocket = serverSocket.accept(); clientProcessingPool.submit(new ClientTask(clientSocket)); } } catch (IOException e) { System.err.println("Unable to process client request"); e.printStackTrace(); } } }; Thread serverThread = new Thread(serverTask); serverThread.start(); } private class ClientTask implements Runnable { private final Socket clientSocket; private ClientTask(Socket clientSocket) { this.clientSocket = clientSocket; } @Override public void run() { System.out.println("Got a client !"); // Do whatever required to process the client's request try { clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } ...
展开详请
赞
0
收藏
0
评论
0
分享
通常情况下,我使用N + 1个线程:一个用于ServerSocket,避免阻塞整个应用程序等待客户端连接; 和N个线程来处理客户端的请求,N是线程池的大小(我建议使用线程池来为每个客户端创建一个新线程)。 public class Server { public static void main(String[] args) { new Server().startServer(); } public void startServer() { final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10); Runnable serverTask = new Runnable() { @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(8000); System.out.println("Waiting for clients to connect..."); while (true) { Socket clientSocket = serverSocket.accept(); clientProcessingPool.submit(new ClientTask(clientSocket)); } } catch (IOException e) { System.err.println("Unable to process client request"); e.printStackTrace(); } } }; Thread serverThread = new Thread(serverTask); serverThread.start(); } private class ClientTask implements Runnable { private final Socket clientSocket; private ClientTask(Socket clientSocket) { this.clientSocket = clientSocket; } @Override public void run() { System.out.println("Got a client !"); // Do whatever required to process the client's request try { clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
相关
产品
热门
专栏
小雨的CSDN
169 文章
24 订阅
LieBrother
62 文章
15 订阅
石头岛
315 文章
30 订阅
冷环渊的全栈工程师历程
159 文章
24 订阅
姜同学
75 文章
14 订阅
领券
http://www.vxiaotou.com