An Actor "queue" ?

Posted by synic on Stack Overflow See other posts from Stack Overflow or by synic
Published on 2010-06-07T22:03:00Z Indexed on 2010/06/07 23:32 UTC
Read the original article Hit count: 270

Filed under:

In Java, to write a library that makes requests to a server, I usually implement some sort of dispatcher (not unlike the one found here in the Twitter4J library: http://github.com/yusuke/twitter4j/blob/master/twitter4j-core/src/main/java/twitter4j/internal/async/DispatcherImpl.java) to limit the number of connections, to perform asynchronous tasks, etc.

The idea is that N number of threads are created. A "Task" is queued and all threads are notified, and one of the threads, when it's ready, will pop an item from the queue, do the work, and then return to a waiting state. If all the threads are busy working on a Task, then the Task is just queued, and the next available thread will take it.

This keeps the max number of connections to N, and allows at most N Tasks to be operating at the same time.

I'm wondering what kind of system I can create with Actors that will accomplish the same thing? Is there a way to have N number of Actors, and when a new message is ready, pass it off to an Actor to handle it - and if all Actors are busy, just queue the message?

© Stack Overflow or respective owner

Related posts about scala