Дизайн этого зависит от того, что вы хотите делать в течение 15 секунд. Два наиболее вероятных случая: «делать это каждые X в течение 15 секунд» или «ждать, пока произойдет X, или 15 секунд, в зависимости от того, что наступит раньше», что приведет к совершенно другому коду.
Просто жду
Thread.sleep (15000)
Это не повторяется, но если вы хотите ничего не делать в течение 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 секунд или другое состояние
Если вы хотите, чтобы ваш код прерывался ровно через 15 секунд, вам понадобится многопоточное решение. Посмотрите на java.util.concurrent для множества полезных объектов. Большинство методов, которые блокируются (например, wait ()), имеют аргумент timeout. семафор может делать именно то, что вам нужно.