Дизайн этого зависит от того, что вы хотите делать за 15 секунд. Два наиболее правдоподобных случая: «сделайте это каждый X за 15 секунд» или «дождитесь появления X или 15 секунд, что произойдет раньше», что приведет к очень разному коду.
Это не повторение, но если вы ничего не хотите делать за 15 секунд, это намного эффективнее (он тратит меньше процессор на то, чтобы ничего не делать) .
Если вы действительно хотите зацикливаться на 15 секунд, тогда ваше решение будет прекрасным, если ваш код не займет слишком много времени. Что-то вроде:
long t= System.currentTimeMillis();
long end = t+15000;
while(System.currentTimeMillis() < end) {
// do something
// pause to avoid churning
Thread.sleep( xxx );
}
Если вы хотите, чтобы ваш код был прерван ровно 15 секунд, что бы он ни делал, вам понадобится многопоточный решение. Посмотрите на java.util.concurrent для множества полезных объектов. Большинство методов, которые блокируют (например, wait ()), имеют аргумент тайм-аута. Семафор может выполнять именно то, что вам нужно.