2014-03-04 98 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; 
     } 
    }); 
}