Используйте счетчик и подождите минуту, когда было отправлено десять писем:
int counter = 0;
for (Client c : clients){
counter++;
setUpEmail(c);
sendMail(c);
if(counter%10==0){
Thread.sleep(60*1000); // wait a minute
}
}
Это не идеально, поскольку вы можете потерять некоторое время, например, если отправке десяти писем требуется 20 секунд, вы можете только ждать За 40 секунд до начала нового массива.
Другой вариант - подождать между каждой почтой, чтобы время для 10 писем было не менее 60 секунд:
for (Client c : clients){
setUpEmail(c);
sendMail(c);
Thread.sleep(6*1000); // wait 6 seconds
}
И более сложное. :
int counter = 0;
long start = System.currentTimeMillis();
for (Client c : clients){
counter++;
setUpEmail(c);
sendMail(c);
if(counter%10==0){
long needed = System.currentTimeMillis() - start; // ms needed for ten mails
Thread.sleep(60*1000 - needed); // wait rest of the minute
start = System.currentTimeMillis(); // start of the next bulk
}
}