2014-03-04 64 views
0

在一个名为a的线程中,我有2个循环,它们都必须在标志为false时停止。 财产以后这样的:在java中转换的替代方法

boolean flag = true; 

t1 = new Thread(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     while(flag && another_condition) 
     { 
     } 

     Do_something_that_takes_time 

     while(flag && another_condition) 
     { 
     } 

    }); 
} 

让我们假设我们进入第一个循环,并在循环运行的变化,以虚假的中间,现在我们将移动到“Do_somthing ......”这可能需要几秒钟车道完成,然后我们将移到第二个循环。 与此同时,旗帜的价值可能再次变为真实!这意味着我将执行第二个循环,我不希望这样做。所以有可能做这样的事情:

boolean flag = true; 

t1 = new Thread(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     while(another_condition) 
     { 
      goto end; 
     } 

     Do_something_that_takes_time 

     while(flag && another_condition) 
     { 
      goto end; 
     } 
     end:  
    }); 
} 

我现在写的代码当然不起作用,但它只是为了证明我的意愿。 我知道“休息”应该是解决方案,但我不能拿出解决方案。

+4

不要'goto' :( – Maroun

+3

如果你想打破/退出'run'方法就用'回报;!' – Pshemo

+0

@Pshemo感谢张贴作为一个答案,我会接受它。 –

回答

1

如果你的目标是要脱离run方法/退出,那么你可以只使用return;

0

放入方法你while循环,且退出了第二循环/方法之后,检查是否需要再次调用第一个方法。

0

您可以使用break和其他条件沿着这些线做些事情。

boolean flag = true; 
boolean skip = false; 

t1 = new Thread(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     while(another_condition) 
     { 
      skip = true;  
      break; 
     } 

     if (!skip) Do_something_that_takes_time; 

     while(flag && another_condition && !skip) 
     { 
      break; 
     } 
    }); 
}