已有101人关注
零基础学Java(全彩版)书中第195页有错
发表在Java图书答疑 2019-05-31 《零基础学Java》第8章 异常处理
是否精华
版块置顶:

老师您好  零基础学Java(全彩版)书中有错误  请看:

第195页拓展训练上面有一个勾

说:程序所在的线程死亡。 <--这句话有错 

我做过实验了 finally还是会被执行


代码如下:

package 线程;

import java.lang.Thread;

public class A {


public static void main(String[] args) {

// TODO Auto-generated method stub


  

   try{

   for(int i=0;i<3;i++) {

   new Thread(new B()).start();

   }

   }catch(Exception e) {

   System.out.println("程序出错啦");

   }finally {

   System.out.println("李伟科");

   }

}


}


class B implements Runnable{

private boolean a=true;

private int sum=0;

public void run() {

try{

while(a) {

sum++;

System.out.println("线程被启动了");

if(sum==5) {

a=false;

}

}

}catch(Exception e) {

System.out.println("出错了");

}finally {

System.out.println("finally");

}

}

}


分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-05-31
沙发

原文没有错误,你这个代码也证明不了任何问题。

  1. 你的代码中没有任何一个catch会被执行。

  2. 你的代码一共有两个线程,一个是你自己写的线程B,一个是虚拟机为main方法创建的线程。main线程中明显没有任何异常,所以必然触发finally代码块。

  3. 因为所有线程都是正常结束生命周期,没有中途死亡的线程,所以所有代码都会正常执行。如果程序所在线程死亡,虚拟机会回收代码控制权,根本就进入不到finally代码块中。

weikeli19
学分:52 LV3
2019-05-31
板凳

根号申 发表于2019-05-31 13:03

原文没有错误,你这个代码也证明不了任何问题。

  1. 你的代码中没有任何一个catch会被执行。

  2. 你的代码一共有两个线程,一个是你自己写的线程B,一个是虚拟机为main方法创建的线程。main线程中明显没有任何异常,所以必然触发finally代码块。

  3. 因为所有线程都是正常结束生命周期,没有中途死亡的线程,所以所有代码都会正常执行。如果程序所在线程死亡,虚拟机会回收代码控制权,根本就进入不到finally代码块中。

那请问老师有没有中途让线程死亡的 方法啊 类之类的

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照