请教一个客服场景下的并发解决方案。
假设1个客服可以服务10个用户,然后有10个客服。
1.客服登录,用户请求分配客服,如果客服都在忙,则返回排队号,等有客服空闲时,则分配给排队队列队首的用户。
2.客服随时会登录,退出。用户随时会加入,放弃排队。
2.java中用什么并发集合比较合适?
1.用户存在一个队列里就好
2.用户放弃不用特殊处理,排到的时候叫号不答应扔掉找下一个
3.客服可以这样做:开一个线性表 n[11],它的每一个元素是一个链表,存着一些客服,其中 n[i] 存着正在服务 i 个用户的客服。每次一个客服新接到或服务完用户后,把它从 n[i] 中取出,放进 n[i - 1] 或 n[i + 1]。维护一个变量 s,表示当前服务用户最少的客服。每次 n[s] 有一个客服搬进 n[s - 1] 时令 s -= 1,n[s] 最后一个客服搬进 n[s + 1] 时令 s += 1。
例如:
假设有三个客服a,b,c,每个客服最多服务三个用户:
开始:
来了一个用户,分配给客服a
又来了一个用户,分配给客服b
又来了一个用户,分配给客服c。
注意到这个时候 n[s] 里只有一个客服了,然后这个客服被挪到 n[s + 1],所以令 s += 1。
然后客服a服务的客户走了,注意到a就在n[s]里,所以令s -= 1。
然后比如说又来了 6 个客户,分配完以后是这种情况:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。