Craigs work is old hat now.
It has been improved and re-implemented from scratch many times over, and you really should just be able to make your own by now.
One of the GPG books had a more useful version where they compressed the whole thing into a single pass using a carefully attenuating fn yet achieved similar (practically identical) results.
So...personally I'd go for that: just find a mathematical fn which provides the desired behaviour and do it in one pass.
PS: I've done a java boids before but it was with a sofware renderer that I'm embarassed to reveal I wrote

. Don't think it would help.