在另一个线程发生事件后如何从嵌套循环进入主循环

时间:2018-11-12 10:02:06

标签: java raspberry-pi

while(true){//main loop
   while(){}//inner loop
   while(){} 
}

这是树莓派中的主程序。我想在时间到期后在嵌套循环中执行程序时获得主循环。超时功能应该在另一个线程中。

最好的问候, 谢谢

2 个答案:

答案 0 :(得分:0)

如果问题是要终止内部循环中的外部循环,则可以使用Java中的标记循环来完成。

public static void main(String[] args) {


    int count =0;

    parentLoop:
    while(true) {  // Outer while loop is labelled as parentLoop
        while(true) {
            count++;
            if(count==100) {
                break;
            }
        }
        while(true) {
            count++;
            if(count>150) {
                break parentLoop; // Breaking the parentLoop from innerloop
            }
        }
    }

    System.out.println("Iterated "+count+" times. ");
}
  • 此处标签名称为 parentLoop ,冒号( ),后跟while循环

答案 1 :(得分:0)

考虑以下答案:How to break out of nested loops in Java?

您可以使用标记的循环突破嵌套循环。

class Scratch {
        public static void main( String[] args ) {
            outermark: while(true){//main loop
                while(true){
                    if(Math.random() > 0.6) break outermark; else break;
                }
                System.out.println("outer loop"); // unreachable code
            }
        }
    }

使用Java Thread类可以实现相同效果的示例代码。

class Scratch {
    public static void main( String[] args ) {


        Thread thread = new Thread( () -> {
            System.out.println( "thread running" );
            while ( Math.random() < .6 ) {
                System.out.println("thread is trying to break");
                if ( Math.random() > .6 ) {
                    break;
                }
                System.out.println("thread failed to break");
            }

            System.out.println("thread completing");
        } );

        thread.run();
        while ( true ) {
            if ( !thread.isAlive() ) break;
        }

        System.out.println( "finished program" );
    }
}