ConcurrentLinkedQueue:如何在 Java 中实现处理程序?
ConcurrentLinkedQueue: How to implement a handler in Java?
假设我们有两个线程通过 ConcurrentLinkedQueue 连接。我想要的是类似于队列上的处理程序,以便一个线程知道另一个队列何时向队列添加了一些东西并对其进行轮询。这可能吗?
通常,当一个线程上至少有一个生产者,另一个线程上至少有一个消费者时,使用 ConcurrentLinkedQueue
。
消费者将在元素可用时立即处理元素,为此,队列块上的读取操作有时会持续有限的时间。
根据应用程序,您可以有一个生产者和多个消费者,反之亦然。
阻塞正好满足您的要求(消费者线程知道何时插入元素)。
消费者线程阻塞不是问题,除非是您的主进程线程或除非您计划构建数百个并发消费者。
所以,Queue#take() 或 Queue#poll(long timeout,TimeUnit unit) 是你的朋友,如果你只是 运行 它在专用线程上。
假设我们有两个线程通过 ConcurrentLinkedQueue 连接。我想要的是类似于队列上的处理程序,以便一个线程知道另一个队列何时向队列添加了一些东西并对其进行轮询。这可能吗?
通常,当一个线程上至少有一个生产者,另一个线程上至少有一个消费者时,使用 ConcurrentLinkedQueue
。
消费者将在元素可用时立即处理元素,为此,队列块上的读取操作有时会持续有限的时间。
根据应用程序,您可以有一个生产者和多个消费者,反之亦然。
阻塞正好满足您的要求(消费者线程知道何时插入元素)。
消费者线程阻塞不是问题,除非是您的主进程线程或除非您计划构建数百个并发消费者。
所以,Queue#take() 或 Queue#poll(long timeout,TimeUnit unit) 是你的朋友,如果你只是 运行 它在专用线程上。