разные варианты есть, например - делаем файл занятости - с первой строкой - 1 поток, а остальные все строки - уже занято - ждём - первейший поток берёт первую строку с удалением - и делает первую часть работы, остальные строки берут и сравнивают что записано в первой строке - если там написано ждём то ветка другая - чекают появление файла сигнала - после перехода в режим ожидания - каждые 60 секунд например - и как только в указанном месте будет создан файл - сигнал - если он есть - тут же переходят к своей основной работе. удаление файла так же можно предусмотреть