在一个名为“我有2个循环”的线程中,当flag为false时,它们都必须停止。 这样的事情:
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)
{
}
});
}
让我们假设我们进入了第一个循环,并且在循环运行的中间变为false,现在我们将移动到“Do_somthing ...”通道,这可能需要几秒钟才能完成,然后我们将被移动到第二个循环。 与此同时,flag的值可能会再次变为true!这意味着我将执行第二个循环而我不希望这样。那么可以这样做:
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:
});
}
我现在编写的代码当然不起作用,但它只是为了证明我的意愿。 我知道“休息”应该是解决方案,但我无法通过使用它来提出解决方案。
答案 0 :(得分:1)
如果您的目标是打破/退出run
方法,那么您可以使用return;
。
答案 1 :(得分:0)
将while
循环放在方法中,退出第二个循环/方法后,检查是否需要再次调用第一个方法。
答案 2 :(得分: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;
}
});
}