![]() |
1
2
为什么需要阻止客户端?似乎在执行初始验证(如果有的话)后立即返回(几乎)并为客户提供给定作业的唯一ID更容易。然后,客户机将能够使用所述ID进行投票,或者可能提供回调。 阻塞意味着你要抓住一个套接字,这显然限制了你可以同时服务的客户机的上限。如果这不是您的场景的问题,并且您绝对需要阻止(也许您对客户机代码没有控制权,并且无法对其进行轮询?),除非您可以将其实际划分为并行任务,否则生成执行该作业的线程是没有意义的。在这种情况下,唯一的“队列”是由公共线程池持有的队列。工作流程基本上是:
本身不需要ID;尽管您可能需要使用某种类型的 latch 对于上述2.1/2.3。 超时可能有点棘手。如果你需要它们或多或少的精确,你必须保持你的主线程(收到客户机请求的线程)没有工作,并且当超时时间达到并立即返回时,让它发出提交作业部分的信号(通过翻转标志)。您必须定期检查所述标志,并在其翻转后终止执行;然后池将回收线程。 |
![]() |
2
0
你如何与客户沟通? 我建议您创建一个对象来表示包含作业参数的每个作业,以及用于访问客户机的套接字(或其他通信机制)。然后,线程池将发送响应,以便在作业处理结束时解除对客户端的阻塞。 |
![]() |
3
0
超时会有点棘手,并且会隐藏gotcha的,但是基本设计似乎很简单,在构造函数中编写一个接受套接字的类。在socket.accept上,我们只是做了一个新的socket处理实例,对可伸缩性有很好的预见性和计划,或者如果这是一个测试实验,那么socket处理类只会处理数据处理类,当它返回时,您会得到一些布尔或数字形式的状态或其他东西,空btw和eth的便利位置。ER从套接字将成功写入输出流,或通知客户端超时或您的业务需要是什么。 如果你必须有一个可扩展的,有效的设计长期运行重型运输,直接去NIO…像我描述的手工编码的一次性解决方案可能无法很好地扩展,但将为代码正确工作的NIO设计提供基本的概念化基础。 (抱歉,伙计们,我认为代码设计模式直接应用于代码,然后在代码工作之后。不能阻止的东西会被改写,而不是以前) |
|
user29759326 · 如何返回递归函数中的最后一个值? 7 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 7 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 7 月前 |
![]() |
rudraraj · java中未声明最终变量 7 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 8 月前 |