>> Probably because if you have lots of ants, you could end up starting too many threads.
My computer's running ~1000 threads right now and since I only plan to have 5 - 20 ants, I figured by program's number of threads would be an after thought. I'm not very experienced with high thread counts so I may be wrong. If I do decide to take the simulation farther, I'd see if I could use one of the college's systems with 128 4-core processors.
Of course, if it's just bad programming practice, let me know and I'll find another way.
>> A lot of the code is event-based, too, and a manager classes/objects are used frequently to pass events down the chain.
The manager class will be event based where the ants (movement, interacting with objects) and time invervals (check for starvation, food spawn, etc..) initiate the events.
>> your governing (or manager) class shouldn't decide when an ant dies
The governing class is designed to act as nature and make sure that the ants obey its laws. I figured since an ant can't decide to just not die of starvation, it shouldn't be the ants choice.
As a final note: I may be going overboard on threads. I've never written a program that had a decent reason for multi-threading, so I may be over-eager to use them. Oh, and I have basically no knowledge of proper uses of threads seeing as I learned all I know from about 10 pages of "Tricks of the Game Programming Gurus" by Andre LaMothe.