首页 > 代码库 > java socket知识点

java socket知识点

3、用线程池实现TCP服务器端时,首先创建一个ServerSocket实例,然后创建N个线程,每个线程反复循环,从(共享的)ServerSocket实例接收客户端连接。当多个线程同时调用一个ServerSocket实例的accept()方法时,它们都将阻塞等待,直到一个新的连接成功建立,然后系统选择一个线程,用于刚刚建立起的新的连接,其他线程则继续阻塞等待。如果在一个客户端连接被创建时,没有线程在accept()方法上阻塞(即所有的线程都在为其他连接服务),系统则将新的连接排列在一个队列中,直到下一次调用accept()方法。

4、利用线程池实现服务器端程序时,线程池的大小需要根据负载情况进行调整,以使客户端连接时间最短,理想的情况是有一个调度工具,可以在系统负载增加时扩展线程池的大小(低于上限值),负载减轻时缩减线程池的大小。Java中提供了Executor接口来管理调度线程,它就代表了一个根据某种策略来执行Runnable实例的对象其中可能包含了排队和调度等细节,或如何选择要执行的任务。在使用Executor时,任务是在Executor内部排队,而不是在网络系统中排队。

java socket知识点