草庐IT

takeSemaphore

全部标签

java - Java中是否有任何(无限制的)公平阻塞队列?

如果多个消费者从同一个队列中删除元素,是否有任何阻塞队列的实现可以保证公平的take()操作。我检查了LinkedBlockingQueue、LinkedTransferQueue,看起来它们都是不公平的。ArrayBlockingQueue提供了公平的操作,但它是有界的。 最佳答案 我们可以使用无界队列(如ConcurrentLinked队列)和公平信号量来实现无界公平阻塞队列。下面的类并没有实现BlockingQueue接口(interface)中的所有方法,只是实现了其中的一些用于演示目的。main()方法仅作为测试编写。pu