替代goto在java中

时间:2014-03-04 14:28:45

标签: java break

在一个名为“我有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:    
    });
}

我现在编写的代码当然不起作用,但它只是为了证明我的意愿。 我知道“休息”应该是解决方案,但我无法通过使用它来提出解决方案。

3 个答案:

答案 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;
        }  
    });
}