2016-06-18 1 views
0

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

while(!cancelled) //where cancelled is volatile variable 
{ 
    // 
} 

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

@Oliver

как упоминается в гадательных документах

for (int i = 0; i < inputs.length; i++) { 
    heavyCrunch(inputs[i]); 
    if (Thread.interrupted()) { 
     // We've been interrupted: no more crunching. 
     return; 
    } 
} 

в коде выше, если() будет вызывать только если heavyCrunch (входы [я]) завершил

+0

'Thread.interrupt' должен быть способ сделать это – Sanjeev

+0

@hitesh, если вы используете ExecutorService, взглянуть на этот вопрос: http://stackoverflow.com/questions/37879274/interrupt -all-threads-if-exception-happens-in-any-of-the-thread-среди-the-thread/ –

ответ

0

Похоже, что вы стремитесь к прерыванию приложением. Вы можете сохранить список тем, которые вы создали, и в своем исключении перебираете другие потоки и прерываете их.

https://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html

+0

Я хочу выполнить долго выполняющуюся задачу без цикла .....! –

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