Java LinkedTransferQueue getWaitingConsumerCount()方法及示例
java.util.concurrent.LinkedTransferQueue .getWaitingConsumerCount() 方法返回等待通过take()或定时轮询从LinkedTransferQueue(LTQ)接收元素的消费者数量。这里的消费者将从LTQ中读取元素。生产者将把元素添加到LTQ中。这个方法只有在多线程运行时才有用,也就是说,生产者正在传输消息,而消费者正在同时接收它们。消费者将尝试读取LTQ的头部。如果他们不能(空的LTQ或头部已经被占用),他们被称为等待。消费者将等待,直到他们读到头部,或直到一定的时间限制过了。当一个生产者通过transfer()向LTQ添加时,它被称为被阻塞。这意味着生产者必须等待,直到有消费者读取该元素,才能向LTQ中添加另一个元素。
语法
参数: 该方法不接受任何参数。
返回值: 该方法返回一个int值,它是通过take()获得的等待LTQ头部的消费者的数量。
例子: 下面的程序使用一个生产者和3个消费者。生产者发送了3条信息。首先调用take()的消费者将收到最新的消息。因此,这个程序的不同执行会导致不同的消费者获得不同的消息。
输出:
注: 显示的是NetBeans 8.2中的输出。建议在本地尝试这个例子,因为它使用了多线程。在线的IDE服务器可能不支持或者不让你增加这样的负载,导致超过时间限制的错误。
参考资料 :https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/LinkedTransferQueue.html#getWaitingConsumerCount-