gpt4 book ai didi

java - Java 中的优先队列,因此每个生产者一次轮到一个

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:11 27 4
gpt4 key购买 nike

如果我有多个用户(不可数),每个用户都在放置工作项在队列上,我如何实现一个队列,以便每个用户在一次?

例如,如果我有用户 A B C,并且有一个类似 [A A B C D A A BC A],我希望它按此顺序处理 [A B C D A B C A A]

这很容易实现,但是如果同时有更多的工作要做呢?处理当前队列元素。所以:

  • 从队列开始:[A A B C D A A B C A]
  • 处理队列:A B C D
  • 队列现在是:[A A A B C A]
  • 添加了更多工作:[A A A B C A D E A B C]
  • 处理队列A B C D E

等等

我不知道会有多少不同的可能用户是,所以不能简单地遍历预定义的用户列表并进行工作(如果有的话)每个。我不关心每个用户的顺序工作得到处理,只要没有用户让两个单元工作,而其他用户有工作等待。

最佳答案

所以我想解决这个问题的方法是有一个 HashMap ,其中不同的用户(即 A、B、C、D 等)将是键,与每个键关联的值将是是他们离开的“圈数”。然后你可以简单地遍历 map ,检查“用户”是否还有更多的“转弯”,如果有,就处理它,如果没有,转到下一个“用户”。

编辑:使用受互斥锁保护的数组或某些线程安全有序对象来保存每个正在处理的用户。还将用户作为键添加到 concurrenthashmap,其中与每个键关联的值是完成它们之前的步骤数。有另一个变量保存列表中的当前位置。

关于java - Java 中的优先队列,因此每个生产者一次轮到一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com