生产者消费者 - 当队列已满或经过一定时间后需要处理队列

Producer consumer - Need to process queue when queue is full or after certain elapsed time

我正在使用 Java 作为我的编程界面。这是我的工作流程。我有一个制作人,他有一个带路径的文件名并将其添加到队列中。然后是消费它的消费者。出列后,我将它添加到 arraylist,然后检查它是否已达到 x 的计数。如果是,那么我会处理它。到目前为止,一切都很好。但问题是当我在这个列表中有一个文件时。在文件列表达到大小 x 之前,它不会被处理。我想要某种计时器过去,在 y 分钟后,如果文件列表不为空,我想处理它。我如何实现这一目标?我知道计时器任务,计划执行程序,但它在计划时间后运行一个线程,这不是我的情况。如果您需要,我可以提供更多详细信息。如果我的设计有误,请告诉我,感谢您的帮助。

每次您尝试出列时,请检查您在使用最后一个文件时设置的 时间戳。如果该时间戳大于您的阈值时间并且队列中有 n 个文件(其中 n < x)- 使用这些文件,即使它们尚未达到 x。

伪代码:

timestamp <= now
every k milliseconds:
   check the number of files n in queue:
       if n >= x:
           consume the files
           update timestamp (to "now")
       else if (now - timestamp > time-threshold):
           consume the files
           update timestamp (to "now")