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
不熟悉吧