为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MMMHUHU 2019-03-13 14:19:08
for(Object i: items){    new Task(new Callback(){        @Override        public void finish() {            //todo        }    }).run();}就以上代码,如何在finish方法中退出for循环,求教!
查看完整描述

6 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-04-23
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

贴个代码吧,公共开关的思路。


public class TestMain {

    public volatile static boolean flag = false;


    public static void main(String[] args) {


        for (int index = 0; index < 100; index++) {

            if (flag) {

                System.out.println("我要退出了,这时候i是:" + index);

                break;

            } else {

                Task task = new Task(index);

                Thread thread = new Thread(task);

                thread.setName("线程"+index);

                thread.start();

                try {

                    Thread.sleep(50);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

        }


    }


}

public class Task implements Runnable{

    private Integer i;

    Task(Integer i){

        this.i = i;

    }

    public void run() {

        System.out.println("我是"+Thread.currentThread().getName());

        try {

            Thread.sleep(100);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        if(i == 10){

            TestMain.flag = true;

        }

    }

    

}

仅供参考


查看完整回答
反对 回复 2019-04-23
?
喵喔喔

TA贡献1735条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-04-23
?
PIPIONE

TA贡献1829条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-04-23
?
jeck猫

TA贡献1909条经验 获得超7个赞

自定义个异常抛出


查看完整回答
反对 回复 2019-04-23
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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


查看完整回答
反对 回复 2019-04-23
?
波斯汪

TA贡献1811条经验 获得超4个赞

你这么写应该是对CyclicBarrier不熟悉吧


查看完整回答
反对 回复 2019-04-23
  • 6 回答
  • 0 关注
  • 566 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号