java.util.concurrent.Flow with opposite direction of item flow

Alexei Kaigorodov via Concurrency-interest <[email protected]>
Newsgroups gmane.comp.java.jsr.166-concurrency
Message-ID <[email protected]>
Consider the following structure of a multithreaded program:
 - a single BlockingQueue
- several Producer threads which push their results to the queue
- several Consumer threads which take items from the queue

Now I want to replace some of the Producers and Consumers with their
asynchronous analogs: AsyncProducer and AsyncConsumer. 
First, I need to add asynchronous interfaces to the BlockingQueue, making it
AsyncBlockingQueue. As a base, I can use my own implementation, not those
from java.util.concurrent.
For interaction between AsyncBlockingQueue and AsyncConsumer interfaces from 
java.util.concurrent.Flow are sutable: AsyncBlockingQueue implements
Flow.Publisher and AsyncConsumer implements Flow.Subscriber. 
But for communication between AsyncProducer and AsyncBlockingQueue
java.util.concurrent.Flow is not sutable.
Let AsyncProducer implements  Flow.Publisher and AsyncBlockingQueue
implements Flow.Subscriber. 
Then, when the queue has room to store items, it should call
Flow.Subscription#request(n), where sum of all arguments 'n' shoud not
exceed the amount of available memory.
But as there are many subscriptions, which subscriptions to choose? 
The queue should know which AsyncProducers are ready to submit data,
otherwise, the resource of its buffer memory is wasted.
The evident solution to this problem is, Producers must play active role and
so be like Subscribers, able to call Subscription#request() at their own
discretion, 
Such a protocol I named ReverseFlow (native English speakers are invited to
propose a better name). 
It is published  at
https://gist.github.com/akaigoro/9506659d7d87a85a2a58a647405d85d6

So I'd like to propose to include ReverseFlow interfaces in JDK, and provide
a reference implementation of AsyncBlockingQueue interface, which extends
BlockingQueue, ReverseFlow.Publisher, and Flow.Publisher.






--
Sent from: http://jsr166-concurrency.10961.n7.nabble.com/
_______________________________________________
Concurrency-interest mailing list
[email protected]
http://cs.oswego.edu/mailman/listinfo/concurrency-interest
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.