Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать паузу в цикле for в Java?

Max Che Ученик (177), закрыт 9 лет назад
не могу сделать так, чтобы цикл был секундный. Вот мой старый вариант, я вопользовался классом Thread и статичным у него методом sleep:
int i;
for(i=0;i<60;i++)
{
Thread.sleep(1000);//сама пауза
label1.setText(String.valueOf(i));//у label,который я зарегестрировал, устанавливаю значение i,но это можно сделать только через String.valueOf
}
if(i==60)//если i=60,то тогда пишем в консоль "Complete!!!(завершено!!!) "
{
System.out.println("Complete!!!")
}
Но этот способ не работал, так как пришлось на Thread.sleep делать try/catch,который закгушал ошибку. И из за этого в продолжительности 60 секунд я не мог даже закрыть программу (закрыл только диспетчером задач). И я так и не могу поставить паузу так, чтобы можно было во фрейме делать что-нибудь. Помогите, заранее спасибо.
Лучший ответ
Курсантскийгомосекс Артиллериявперед Мудрец (19960) 9 лет назад
я не понимаю насколько дебильным должен быть алгоритм, чтобы в нем делать паузы, которые не аргументируются действием.
Max CheУченик (177) 9 лет назад
типо секундомер, но только это не приложение, а секундный цикл
Max CheУченик (177) 9 лет назад
я привёл лишь пример
Остальные ответы
Максим Искусственный Интеллект (218678) 9 лет назад
Чем вам InterruptedException мешает? Эта ошибка возникает только в случае прерывания потока и никак в вашем случае не помешает. Но не проще ли использовать Timer для таких целей, если надо каждую секунду что-то делать? Я считаю, что для этого он подходит намного лучше. В каком фрейме что сделать? Ясное дело, что это нужно делать в отдельном потоке, а не в том, в котором работает форма.
Max CheУченик (177) 9 лет назад
я знаю, я уже месяц решаю эту проблемму. И таймер хорошо подходит, но его я запустить не могу. Мало где это написано. И я думал что есть другой выход
Максим Искусственный Интеллект (218678) Не пытайтесь даже пытаться делать такого рода паузы в потоке, в котором выполняется форма. Это так не работает, потому что форма будет тормозить. Для этого нужно создавать отдельный поток как минимум. И лучше в виде таймера.
shark shark Гуру (4791) 9 лет назад
Используй setTimeout.

var flag=false;
function wait(){
if(!flag) setTimeout('wait()',100);
else return;
}
wait();

Или используй метод delay() в jQuery
Похожие вопросы