2013-06-01 6 views
-2

Мне нужно запустить бесконечный цикл, пока пользователь не попросит его сломаться. Например ...Прорыв бесконечного цикла

while(true) 
{ 
    someFunction(); 
    Thread.sleep(4000); 
} 

Как вы можете видеть, я хочу непрерывно запускать функцию каждые 4 секунды. Но как мне выйти из цикла, когда я хочу, чтобы он остановился?

Заранее благодарен!

+0

Приятно задавать вопросы на форумах или сайтах, подобных этому, когда у вас возникают проблемы, но на такой ответ можно ответить Google гораздо быстрее. Попробуйте googleing заголовок вашего потока здесь + java, например, и вы увидите тонны хороших ответов. – Vegard

+0

Vegard - спасибо, НО я не думаю, что вы получаете то, что мне нужно ... конечно, я пытался найти ответ на Google в течение нескольких часов, но не могу, и именно поэтому я здесь. Еще раз, мне нужно, чтобы он продолжал цикл. UNTIL пользователь хочет его разбить. Я думаю, что Джунад может дать ответ, но пока не уверен. – user2443634

+0

Если это не ответы на ваш вопрос, я думаю, вам нужно переписать свой вопрос, может быть, ваш вопрос, как читать пользовательский ввод и преобразовывать его в логическое значение? – Vegard

ответ

0

Используйте статическую летучий переменную в то время, и установить его из другого потока, когда вы хотите, чтобы остановить поток:

while(Someclass.staticVariable) 
{ 
    someFunction(); 
    Thread.sleep(4000); 
} 

из другого потока разорвать эту петлю

Someclass.staticVariable = false; 
+0

Возможно, нужно «volatile». –

+0

@ T.J.Crowder обновил разрешение. Благодаря! –

1

someFunction может быть логическим? если да

if (someFunction()) break; 
+3

Да, но я бы, по крайней мере, лично, скорее, видел 'while (someFunction()) Thread.sleep (4000);' –

+0

Я согласен, но поскольку вопрос - это то, что он мог бы быстро найти в Googled, я не слишком много размышлял передовой практики и просто ответил на вопрос. – Vegard

+0

Нет, мне нужно, чтобы продолжить цикл без ввода пользователем. UNLESS пользователь хочет его сломать. – user2443634

1

У вас есть два варианта: вы можете использовать break; или добавить логическое значение в ваше время цикла

1:

while(userWantsToKeppGoing) 
{ 
    someFunction(); 
    Thread.sleep(4000); 
} 

2:

while(true) 
{ 
    if(userDoesntWantToKeepGoing) break; 
    someFunction(); 
    Thread.sleep(4000); 
} 
0

вы можете использовать глобальную логическую переменную как флаг, который SomeFunction() может измениться, и сделать что-то как:

while(globalFlag) 
{ 
    someFunction(); 
    Thread.sleep(4000); 
} 
0

Отъезд перерыва statemen т.

Посмотрите на this SO q/a.

Смежные вопросы