也许这是一个标准的多线程问题,并且有一个名字。
一个队列有一个项目列表,每个项目都是:{"resource" : "r1", "action" : "create"}。现在的问题是从这个队列中读取数据,并以多线程的方式处理操作。但是针对特定资源的操作应该是有序的。
例如,示例输入:
[{"resource" : "r1", "action" : "create"}, {"resource" : "r2", "action" : "create"}, {"resource" : "r1", "action" : "update"}]。
预期可以在r1之前处理r2,但r1的创建操作应在更新操作之前进行。
我认为和放弃的一个解决方案是为每个资源都有专用线程,但由于线程数量有限,输入很大,这将不起作用。
有什么建议吗?
发布于 2021-08-21 10:19:00
是的,你是对的。它的名称是PriorityBlockingQueue,它是线程安全的,并且可以灵活地以构造函数参数的形式声明队列中对象的自定义比较器。
发布于 2021-08-27 22:28:05
您可以在此处实现驱动程序/工作程序架构。
将有多个工作进程监听其各自的队列。工作人员的数量将取决于事件的数量。
这与分区的概念非常相似,在分区中,我们使用分区键来保证特定分区的顺序。
https://stackoverflow.com/questions/68870563
复制相似问题