猿问

不知如何退出这样的 for 循环?

for(Object i: items){

    new Task(new Callback(){


        @Override

        public void finish() {

            //todo

        }

    }).run();

}

就以上代码,如何在finish方法中退出for循环,求教!


MMMHUHU
浏览 567回答 6
6回答

慕标琳琳

给里外层设置个公用开关,里层跳出后,外层也中断.

30秒到达战场

贴个代码吧,公共开关的思路。public class TestMain {&nbsp; &nbsp; public volatile static boolean flag = false;&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; for (int index = 0; index < 100; index++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (flag) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("我要退出了,这时候i是:" + index);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Task task = new Task(index);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread thread = new Thread(task);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thread.setName("线程"+index);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thread.start();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(50);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}public class Task implements Runnable{&nbsp; &nbsp; private Integer i;&nbsp; &nbsp; Task(Integer i){&nbsp; &nbsp; &nbsp; &nbsp; this.i = i;&nbsp; &nbsp; }&nbsp; &nbsp; public void run() {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("我是"+Thread.currentThread().getName());&nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(100);&nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if(i == 10){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TestMain.flag = true;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;}仅供参考

喵喔喔

不是同步的,没办法从finish函数中直接中断。你可以设置个标记或是其他什么方法了

PIPIONE

是同步的,但没法直接中断。

jeck猫

自定义个异常抛出

叮当猫咪

赞成二次元李健的回答,可以考虑设置标志变量

波斯汪

你这么写应该是对CyclicBarrier不熟悉吧
随时随地看视频慕课网APP

相关分类

Java
我要回答