一个基本的设计将负责处理传入请求(具有您想要的限制),然后将它们交给worker/request处理程序线程。当这些工作线程中的每一个完成时,您都需要更新共享/全局计数器,让主线程知道它可以建立新的连接。这需要一定程度的同步,但它可能非常有趣。
这里的想法:
serverThread:
while true:
serverLock.acquire()
if numberOfRequests < MAX_REQUESTS:
packet = socket.receive()
numberOfRequests++
requestThread(packet).run()
else
serverMonitor.wait(serverLock);
serverLock.release()
requestThread:
//handle packet
serverLock.acquire()
if numberOfRequests == MAX_REQUESTS:
numberOfRequests--
serverMonitor.pulse();
serverLock.release()
你要确保同步是正确的,这仅仅是给你的,你可以开始什么出了个主意。但是,当你掌握它的时候,你将能够进行优化和增强。一种特殊的改进,也适用于有限数量的请求,称为ThreadPool。
无论基本结构与大多数服务器非常相似:主线程负责将请求转交给工作线程。这是一个简洁而简单的抽象。
检查这个环节的休息,请 http://stackoverflow.com/questions/773121/how-can-i-implement -a线程,基于UDP的服务器 - 在的Java – 2012-01-10 19:39:27