2013-10-11 5 views
0

Мне нужно решение из этих строк кода, я хочу выполнить 10 циклов, и в 10 я хочу, чтобы он был system.exit(); где мой GUI просто выходит из себя, нужна помощь! В настоящее время эти строки просто выйти и оно не выполняет ничегоМоя петля просто выходит сама

int counter = 0; 
      while(true){ 
       counter++; 
      for (int i = 0; i < 5; i++) { 
       if(counter < 10){ 
        new Thread(new Person(bathroom, !isMale)).start(); 
        new Thread(new Person(bathroom, isMale)).start(); 
       } 
       else{ 
        System.exit(0); 
       } 

      } 

ответ

3
System.exit(0); 

System.exit будет выйти все темы, в том числе те, которые вы начали.

Вы должны дождаться остановки всех потоков до выхода. Основываясь на том, как они могут быть организованы, я бы подсчитал количество потоков, которые нужно запустить, и заставит их всех ждать на защелке обратного отсчета с основным потоком в конце, или много проще, но более взломать, включить основной поток :

while(true){ 

} 

в конце.

+0

да, нужно ли мне иметь условие, чтобы остановить его? Я имею в виду, что мое условие только хочет выйти, если встречный счетчик 10 выполнен. Я полагаю, если счетчик меньше 10, поток начнется, не так ли? тогда, если это 10, он должен сделать systemexit, что вы на самом деле имеете в виду с помощью кнопки обратного отсчета? – ProblematicSolution

+1

@ProblematicSolution Я не думаю, что вы понимаете, что такое точка потока. Нить будет работать независимо от других потоков, поэтому при ее запуске она будет работать независимо. Дело здесь в том, что перед тем, как пытаться применить потоки, вам нужно изучить концепции потоков. – hexafraction

0

после того, как вы начали новые темы, они будут принимать свой собственный курс ..

вы можете использовать функцию Join(), чтобы гарантировать, что они завершить работу ..

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