{
final AtomicBoolean flags[] = new AtomicBoolean[1000];
for (int i = 0; i < flags.length; i++)
flags[i] = new AtomicBoolean();
final AtomicBoolean error = new AtomicBoolean();
ThreadManager tm = new ThreadManager(flags.length, new artofillusion.util.ThreadManager.Task()
{
public void execute(int index)
{
if (flags[index].get())
error.set(true);
flags[index].set(true);
}
public void cleanup()
{
}
});
for (int repeat = 0; repeat < 50; repeat++)
{
for (int i = 0; i < flags.length; i++)
flags[i].set(false);
error.set(false);
tm.run();
assertFalse(error.get());
for (int i = 0; i < flags.length; i++)
assertTrue(flags[i].get());
}
}