84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
for(Object i: items){ new Task(new Callback(){ @Override public void finish() { //todo } }).run(); }
就以上代码,如何在finish方法中退出for循环,求教!
人生最曼妙的风景,竟是内心的淡定与从容!
给里外层设置个公用开关,里层跳出后,外层也中断.
贴个代码吧,公共开关的思路。
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; } } }
仅供参考
不是同步的,没办法从finish函数中直接中断。你可以设置个标记或是其他什么方法了
finish
是同步的,但没法直接中断。
赞成楼上的思路 用公共开关
自定义个异常抛出
赞成二次元李健的回答,可以考虑设置标志变量
你这么写应该是对CyclicBarrier不熟悉吧
CyclicBarrier
给里外层设置个公用开关,里层跳出后,外层也中断.
贴个代码吧,公共开关的思路。
仅供参考
不是同步的,没办法从
finish
函数中直接中断。你可以设置个标记或是其他什么方法了是同步的,但没法直接中断。
赞成楼上的思路 用公共开关
自定义个异常抛出
赞成二次元李健的回答,可以考虑设置标志变量
你这么写应该是对
CyclicBarrier
不熟悉吧