最近学习多线程看到了一个描述不太准确的地方,让我对return break continue个语句的不同开始详细了解了一番,之前只是知道怎么使用,不是很深入研究,基本遇到了跳出就用return来解决全部问题。
代码:
1 public class Test { 2 public static void main(String[] args) { 3 try { 4 Mythread mythread=new Mythread(); 5 mythread.start(); 6 Thread.sleep(1000); 7 mythread.interrupt(); 8 } catch (InterruptedException e) { 9 e.printStackTrace(); 10 } 11 } 12 } 13 14 class Mythread extends Thread{ 15 public void run(){ 16 super.run(); 17 for(int i=0;i<500000;i++){ 18 if(this.interrupted()){ //判断线程是否停止 19 System.out.println("STOP!!"); 20 break; 22 } 23 System.out.println("i= "+(i+1)); 24 } 25 System.out.println("END!!!"); 26 } 27 }
在看这段代码的时候是这样解释的:虽然停止了线程,但是如果for之后还有语句,还是会继续运行的。让我错误的理解为在这里使用break的时候会线程先退出了,然后又重启了。显然这样的理解是不对的,应该是break只是退出了这个for循环语句,线程继续执行直到这个方法结束。
首先,return:
return这个语句是作为返回的语句,将函数或者方法的值返回给主调函数,然后改函数执行结束。
比如:
1 for(int i=0;i<500000;i++){ 2 if(i==1){ 3 System.out.println("STOP!!"); 4 return 0; 5 } 6 System.out.println("i= "+(i+1)); 7 }
这里返回值为0,当i的值为1的时候输出了STOP并且这个函数/方法的返回值为0,然后这个函数就停止执行,return语句直接跳出就跳出了函数,包括函数中的方法。
之后就是 break
break一般作为条件分之或者循环的跳出语句,使程序跳出循环执行之后的继续执行之后的程序。
比如第一个程序中使用的break,程序的for循环遇到线程停止的结果的时候会执行break语句,然后跳出这个for循环,之后继续执行这个方法中之后的语句,知道之后的代码运行完成之后。
最后一个是continue语句
这个语句我使用的很少,基本没有用到过,这个语句就是跳过循环一次继续执行这个,这个应该很好想了。
=========================================
时间: 2024-10-24 12:44:07