Говорят, что цикл
for (int i = 0; i < array.length; i++) ...
значительно эффективней, чем
for (String s : array) ...
Поэтому надо заменить
for (Object mutex : mutexes) {
mutex.wait();
}
на
for (int i = 0; i < mutexes.length; i++) {
mutexes[i].wait();
}
...