В данном случае разве не логично было бы использовать один блок
synchronized ?
на всеь блок
switch(args[0]) {
case ...
.
.
.
}
Ведь все равно все блоки блокируются по
synchronized (allPeople)
и одновременно может работать только один case.