首页 > 代码库 > java socket知识点
java socket知识点
3、用线程池实现TCP服务器端时,首先创建一个ServerSocket实例,然后创建N个线程,每个线程反复循环,从(共享的)ServerSocket实例接收客户端连接。当多个线程同时调用一个ServerSocket实例的accept()方法时,它们都将阻塞等待,直到一个新的连接成功建立,然后系统选择一个线程,用于刚刚建立起的新的连接,其他线程则继续阻塞等待。如果在一个客户端连接被创建时,没有线程在accept()方法上阻塞(即所有的线程都在为其他连接服务),系统则将新的连接排列在一个队列中,直到下一次调用accept()方法。
4、利用线程池实现服务器端程序时,线程池的大小需要根据负载情况进行调整,以使客户端连接时间最短,理想的情况是有一个调度工具,可以在系统负载增加时扩展线程池的大小(低于上限值),负载减轻时缩减线程池的大小。Java中提供了Executor接口来管理调度线程,它就代表了一个根据某种策略来执行Runnable实例的对象其中可能包含了排队和调度等细节,或如何选择要执行的任务。在使用Executor时,任务是在Executor内部排队,而不是在网络系统中排队。
java socket知识点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。