[concurrency-interest] Using concurrent to write a load balancer

syg6 syg6 at yahoo.com
Mon Sep 18 06:40:42 EDT 2006

Hello all.

I am trying to write a load balancer using the new Java 1.5 concurrent
classes. I am currently trudging through all of the examples, trying to see
what I might use. I wanted to bounce my idea off the group.

I will have a more-or-less fixed pool of a small number of threads (it might
grow or shrink every now an then but not often). Each thread will have the
same Task associated with it, a task that sends out a 'ping' (using
java.net's isReachable, which is another can of worms, but anyway ...)

So every time a request comes in I'd like to use a CyclicBarrier (I think)
to launch all of the threads and when the first thread answers (with the ip
of the machine pinged), cancel all of the other Tasks, reset and wait for
the next request.

I *think* the best way to do this is with a CyclicBarrier, because I need a
reusable way to launch all of my threads/tasks at once. CountDownLatch isn't
reusable and it I were to use a ExecutorCompletionService I'd have to call
the submit() method for each Task, one after the other, which means the
first Task would probably almost always be the first to respond.

The only possible problem I see with CyclicBarrier is, what happens when,
say, a request comes in, I launch my 5 (for example) threads, one responds
but before the other 4 can respond I get another request? Then I'll have to
wait until they all respond to re-launch. Ideally I'd like to re-launch
immediately with the 1 thread I have available, but I don't know if this is
possible ...

Does this sound doable? Anyone have any code that resembles this?

Many thanks,

ps. I posted on this last week on the java.sun.com forums, but decided to
move over to Nabble ... Here's the 
http://forum.java.sun.com/thread.jspa?threadID=768022&tstart=0 link :

View this message in context: http://www.nabble.com/Using-concurrent-to-write-a-load-balancer-tf2290433.html#a6361357
Sent from the JSR166 Concurrency mailing list archive at Nabble.com.

More information about the Concurrency-interest mailing list