gpt4 book ai didi

工作队列的 Java 并发抽象

转载 作者:行者123 更新时间:2023-11-30 09:43:50 25 4
gpt4 key购买 nike

我发现自己过多地考虑解决并发问题,这对我来说表明可能有一个抽象来完成我应该使用的我想要的东西。

这里是基本前提:

  • 我有一个可以处理的数据队列
  • 线程可以进入并向队列中添加工作
  • 开始和完成一组要处理的项目会产生很高的开销
  • 一次只能有一个线程处理数据

我认为以下 API 会很好:

  • 线程可以向队列中添加工作
  • 如果当前未处理队列中的数据,则调用后台任务开始处理
  • 后台任务继续在队列上工作,直到它为空,即使其他线程丢弃额外的项目以在队列中工作

困难的部分是,如果线程在工作线程即将完成的同时放弃一项工作,则确保数据不会留在未处理的队列中。

我会假设存在一个抽象来解决这个问题。有人知道吗?


编辑:

更具体地说,我说的是增量搜索索引器,添加到队列中的数据是要处理的额外文档。当我谈论开始和停止一组工作时,我指的是建立缓存上下文和提交更新的索引。我们不能一直运行一个工作线程,因为如果我们从不提交,新索引就永远不会提交,如果我们不定期关闭缓存上下文,它可能会变得太大。

目标是在大多数情况下,一次只处理几件工作,但在高负载期间,我们不会浪费太多时间做太多提交。

最佳答案

关于工作队列的 Java 并发抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187774/

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