1. 本章学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。

 1.守护线程:setDaemon(true or false),如果所有前台线程死亡,守护线程自动结束,一般是一些用来提示信息的线程。
 2.线程休眠:静态方法sleep(long million)可以让正在执行的线程暂停一段时间,进入休眠等待的状态。
 3.线程让步:yield()方法暂停正在运行的线程,不会阻塞线程。
 4.线程插队:join()方法阻塞调用的线程,直到被join()方法加入的线程完成后,调用的线程才会继续运行。

2. 书面作业

Q1.finally

题目4-2

1.1 截图你的提交结果(出现学号)

答:



1.2 4-2中finally中捕获异常需要注意什么?

答:

(1)在一般情况下,finally块中的代码一定会被执行,因此用来完成必须做的事情,如释放系统资源。

(2)finally中的代码块不会执行的一种情况:在try...catch中执行了System.exit(0);(表示退出当前虚拟机)

Q2.用异常改进ArrayIntegerStack

题目4-3

2.1 截图你的提交结果(出现学号)

答:



2.2 实验总结

答:

1.如果栈满,抛出FullStackException;如果栈空,抛出EmptyStackException,否则返回。

2.使用异常而不是返回null来提示用户程序出错是可以让调用者更清楚知道异常发生的原因,以便于调用者解决。

Q3.自定义异常

题目5-4

4.1 截图你的提交结果(出现学号)

答:

4.2 自定义异常有哪几个关键点?

答:

1)自定义异常必须继承自Exception以及其子类,

2)在构造方法中使用super()语句调用Exception的构造方法。

3)throw关键字用于在方法中声明抛出异常的实例对象时,需要使用try-catch语句对抛出的异常进行处理。

4)throws关键字声明抛出异常,由调用者负责处理。

Q4.读取文件并组装对象

实验任务书中中的题目3:读取文件并组装对象

给出关键代码(需出现你的学号)

答:

 public class Main026{
 public static void main(String[] args)  throws FileNotFoundException{
    Scanner in = new Scanner(new File("身份证号.txt"));//为myfile.txt这个File创建一个扫描器in
    List<User> user=new ArrayList<User>();
    int count=0;
    while(in.hasNextLine()){
        String line = in.nextLine();//读出myfile.txt的下一行
        count++;
        Scanner lineScanner = new Scanner(line);//为每一行建立一个扫描器
        //System.out.println("lineScanner="+lineScanner);
        lineScanner.useDelimiter(" ");//使用空格作为分隔符
        //System.out.println(line);
        try{
            String a1 = lineScanner.next();//姓名
            String a2 = lineScanner.next();//身份证号
            String a3 = lineScanner.next();//性别
            String a4 = lineScanner.next();//年龄
            String a5 = lineScanner.next();//地址
            while(lineScanner.hasNext()){//谨防地址只有一段
                a5 += lineScanner.next();
            }
            try{
                if(a1==null)
                    throw new NullPointerException("姓名为空");
                else if(a1.length()>10)
                    throw new NoSuchElementException("输入的姓名有误");
                if(a2==null)
                    throw new NullPointerException("身份证号为空");
                else if(a2.length()!=18)
                    throw new NoSuchElementException("输入的身份证号有误");
                if(a3==null)
                    throw new NullPointerException("性别为空");
                else if(!a3.equals("男")&&!a3.equals("女"))
                    throw new NoSuchElementException("输入的性别有误");
                if(a4==null)
                    throw new NullPointerException("年龄为空");
                if(a5==null)
                    throw new NullPointerException("地址为空");
                user.add(new User(a1,a2,a3,Integer.parseInt(a4),a5));
                System.out.println(a1+a2+a3+a4+a5);
            }catch(Exception e){
                System.out.println("错误发生在第"+count+"行");
                System.out.println(e);
                System.out.println("该行的内容为:"+a1+a2+a3+a4+a5);
            }
        }catch(NoSuchElementException e){
            continue;
        }

    }
    user.sort(new Comparator<User>(){
        @Override
        public int compare(User o1, User o2) {
            return o1.getAge()-o2.getAge();
        }

    });
        System.out.println(user);
        in.close();
    }
}

Q5.学会使用Eclipse进行调试

观看相关调试视频

5.1 简述使用Eclipse进行调试需要几步?

答:

调试步骤:
1.设置断点
2.打开Debug,进入Debug界面
3.进行调试操作,观看界面状态是否发生变化
4.找出问题,去掉断点,返回JAVA界面

5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?

答:

F5(step into):进入当前行的方法内部,一步一步执行;

F6(step over,跳过):执行当前行,但不进入执行细节;

F7 (step return,跳出):返回上一步执行的方法

注:

F8(Resume):跳到下一个断点

Ctrl+F2(Terminate): 终止

5.3 除了Eclipse的调试器,你还使用什么方法调试程序?

答:

改变输入的值,或者尝试在代码中自己添加输出一些需要的变量信息,通过比较多次运行后输出结果的不同来调试程序。

注:

1.每个需要测试的类中放一个main方法

2.JUnit(单元测试框架)

3.日志(现在用的更多使用第三方日志框架Log4j2)

4.Throwable的printStackTrace方法

5.System.err

6.将错误信息保存到文件中 java Test 2 >errors.txt

Q6.题集多线程

6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)

答:

6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)

答:

4.1截图:



4.2截图:

6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。

答:

Labmda表达式:
Thread t1=new Thread(()->{
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(new Tread().getClass.getInterfaces()));
});
t1.start();

6.4 实验总结

答:

1.Thread的setDaemon(boolean)方法,标记线程为守护线程。

2.启动线程后调用Thread的join()方法,作用是等待线程的结束。在调用这个方法时,主线程暂停执行,等待该线程执行完毕后继续执行。

3.匿名内部类的使用,在Thread中实现Runnable接口的run方法。

4.线程让步:yield()和sleep()的方法有点相似,但yield()方法在暂停正在运行的线程时,不会阻塞线程,调用yield()方法时,只有和当前线程优先级相同或者更高的线程才能获得执行的机会。

Q7.源代码阅读:多线程程序BounceThread

7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?

答:BallRunnable是支持多线程的类,实现了Runnable接口。这个类让生成的小球显示在当前位置,并repaint(),从而实现了move的效果。

7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?

答:move()移动小球和Ellipse2D getShape()获取小球的坐标

7.3 BallComponent也只做了两件事,这两件事分别是什么?

答:添加一个小球,并画出这个小球。

7.4 BounceThread中,什么时候启动了新线程?

答:点击addButton按钮时添加一个小球,启动一个新线程。

7.5 这个程序是如何实现?一个大致的执行流程是什么?

答:设计一个图形界面,并且加入显示小球运动的方法,点击添加小球按钮就会有小球出现在界面中并开始移动,同时可以通过点击增加小球的数量。

8.购物车系统中的多线程

8.1 购物车系统中可能存在哪些多线程?

答:

1.许多个用户同时对数量有限的商品进行抢购时(可能会出现打印的商品的剩余数量为0甚至为负数等情况)。

2.很多用户在同一时间段同一家店铺内进行付款以及退款操作时

3.多个账户恰好在同一时间进行登陆账号操作时

3.本周码云代码Commit历史截图

答:

201521123026《Java程序设》 第10周学习总结的更多相关文章

  1. 20145334 《Java程序设计》第10周学习总结

    20145334 <Java程序设计>第10周学习总结 教材学习内容总结 一.网络编程 •网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入 ...

  2. 20145320 《Java程序设计》第10周学习总结

    20145320 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义 ...

  3. 20145208 《Java程序设计》第10周学习总结

    20145208 <Java程序设计>第10周学习总结 教材学习内容总结 了解JAVA网络编程的基础知识 这一部分知识的学习在我的实验中有叙述实验五 补充内容: 在现有的网络中,网络通讯的 ...

  4. 20145317彭垚 《Java程序设计》第10周学习总结

    20145317彭垚 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网 ...

  5. 20145227《Java程序设计》第10周学习总结

    20145227<Java程序设计>第10周学习总结 教材学习内容总结 网络编程 就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收 ...

  6. 20145218 《Java程序设计》第10周学习总结

    20145218 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 程序员所作的事情就是把数据发送到指定的位 ...

  7. 20155219 2016-2017-2 《Java程序设计》第10周学习总结

    20155219 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计 ...

  8. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  9. 20155202 2016-2017-2 《Java程序设计》第10周学习总结

    20155202 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 计算机网络基础 一.网络模型 模型分类: OSI,TCP/IP,五层协议的体系结构,以及各 ...

  10. 20155210 2016-2017-2 《Java程序设计》第10周学习总结

    20155210 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输.按照计算 ...

随机推荐

  1. 《Java从入门到放弃》入门篇:hibernate查询——HQL

    不知不觉又到了hibernate的最后一篇了,只感觉时光飞逝~,岁月如梭~! 转眼之间,我们就···························,好吧,想装个X,结果装不下去了,还是直接开始吧· ...

  2. 一个项目经理对主流项目管理工具的对比:禅道VS华为软件开发云

    禅道与软件开发云对比分析报告 1. 产品介绍 禅道是易软天创出品的一款项目管理软件,集产品管理.项目管理.测试管理.文档管理.组织管理于一体,覆盖了项目管理和测试管理的核心流程. 华为软件开发云 (D ...

  3. Zim学习笔记 (Fedora)

    俗话说好记性不如烂笔头, 对于一个搞IT的人来说最好的笔毫无疑问就应该是电脑了, 但最好的本呢? 之前一直在找一款适合自己的笔记软件, 找来找去只有Zim适合自己, 当然对于有编辑器之神之美誉的ema ...

  4. 【Linux】添加sudo用户、sudo用戶組

    sudo权限在super和普通用户之间,既不因为操作失误带来麻烦,也可以在必要时发挥管理员权限,适合于系统管理员使用. 给一个普通用户添加sudo权限步骤: 1. su进入超级用户模式 . 2.添加文 ...

  5. Java 开发环境配置(Windows篇)

    window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...

  6. Tomcat7安装及配置教程

    Apache  Tomcat7.0安装及配置教程.. Apache  Tomcat7.0官方网站链接:http://tomcat.apache.org/ apache-tomcat-7.0.73-wi ...

  7. php ddos 安全处理代码

    <?php//查询禁止IP$ip =$_SERVER['REMOTE_ADDR'];$fileht=".htaccess2";if(!file_exists($fileht) ...

  8. vue2项目使用axios发送请求

    前言:在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 目前主流的 Vue 项目,都选 ...

  9. golang channel无缓冲通道会发生阻塞的验证

    公司搞了午间技术par,本周我讲的主题是关于无缓冲通道channel是否会发生阻塞,并进行了验证. go语言中channel分为无缓冲通道和有缓冲通道两种 channel提供了一种在goroutine ...

  10. maven 搭建 SpringMVC + MyBatis(1)

    ·做了两年多Java Web一多半的项目都是SSM架构的,只搭建过两次,趁着周末做个总结整理. Eclipse搭建Maven项目 1.new project  --> Maven project ...