Ну, вы могли бы сделать что-то вроде:
long millisWithinSecond = System.currentTimeMillis() % 1000;
Thread.sleep(1000 - millisWithinSecond);
Это не будет точным, учтите - вам может понадобиться итерация, что немного грязно.
Однако,было бы лучше вообще не спать.Не могли бы вы ввести «службу сна», которая позволила бы вам подделать сны в тестах?(Мне редко нужно было это делать, но я часто вводил фальшивые часы, чтобы сообщать о разных временах.) Какова цель сна в рабочем коде вообще?