• 201521123022 《Java程序设计》 第十周学习总结


    1. 本周学习总结

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

    2. 书面作业

    本次PTA作业题集异常、多线程

    Q1.finally

    题目4-2

    Q1.1 截图你的提交结果(出现学号)

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

    只要try执行了之后,finally总是会被执行。注意不可不恰当的使用finally(如在finally块当中抛出新的异常)。

    Q2.用异常改进ArrayIntegerStack

    题目4-3

    Q2.1 截图你的提交结果(出现学号)

    Q2.2 实验总结

    本题对上次实验编写的ArrayIntegerStack题目中的三个方法(push(Integer item)pop()peek())进行了修改,主要是对于异常的抛出。例如当栈满,直接throw new FullStackException()。

    Q3.自定义异常

    题目5-4

    Q3.1 截图你的提交结果(出现学号)

    Q3.2 自定义异常有哪几个关键点?

    • 自定义异常根据是否需要try-catch来确定是extends Exception还是RuntimeException。
    • 抛出异常的时候要显示异常信息,以方便用户了解相关异常信息。
    • 发现和抛出一个自定义异常一般利用if和throw语句完成。

    Q4.读取文件并组装对象

    实验任务书中中的题目3:读取文件并组装对象,给出关键代码(需出现你的学号)

    Q5.学会使用Eclipse进行调试

    观看相关调试视频

    Q5.1 简述使用Eclipse进行调试需要几步?

    1.设置断点。
    2.进入Debug界面。
    3.运行程序。
    4.查看状态值。

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

    F5:跳入当前行的方法内部,一步步执行程序段中的每一步代码。问题出现在方法内部时。
    F6:向下逐行调试。单步执行并跳过。一步步调试时用。
    F7:跳出某个方法,单步执行并返回。F5调试中确认问题不在方法内部需跳出时用。

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

    用System.out.println()打印输出来调试。

    Q6.题集多线程

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

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

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

    改写代码如下:

    Thread t1 = new Thread(
            () -> {
                System.out.println(mainThreadName);
                System.out.println(Thread.currentThread().getName());
                System.out.println(Arrays.toString(Thread.class.getInterfaces()));
            }
    );
    

    Q6.4 实验总结

    3-1:设置t1为守护线程即可。
    3-2:因为要求main方法的最后一句在线程打印完后执行,所以使用join()方法。
    4-1:按题目要求编写public void run()方法覆盖Thread类的run()方法即可。
    4-2:MonitorTask运行时,当word不为null后判断是否包含“alien”,之后要将word置为null;再之后可用yield()方法切换到其他线程。
    4-3:Runnable接口的匿名内部类的实现。主要还是要熟练掌握匿名内部类的相关操作。

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

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

    BallRunnable类,实现了Runnable接口。在这个类中调用小球移动的函数,之后repaint(),实现小球移动效果。

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

    1.实现小球移动功能。2.获得小球的坐标和大小。

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

    1.添加小球。2.画出小球。

    Q7.4 BounceThread中,什么时候启动了新线程?

    在点击按钮的时候,程序调用了addBall()方法完成添加小球的动作,启动新线程。

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

    先建立Jframe窗口,加入显示小球运动的组件,每点击一次按钮在界面中出现一个小球并开始移动,小球移动一定位置后停止。

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

    Q8.1 购物车系统中可能存在哪些多线程问题?

    每个顾客都相当于一个线程。可以同时选购商品,但商品数量是有限的,即商品数量<顾客数量,这样就会出现后来的顾客碰见商品卖光而无法购买的情况。

    3. 码云上代码提交记录

  • 相关阅读:
    用Github发布静态页面
    JS实现图片放大查看
    CSS3-字体渐变色
    Eclipse切换工作空间(Workspace)
    JS打开新的窗口
    HTML中特殊符号的处理
    PHP转码函数
    SecureCRT按退格键出现^H问题解决
    商人过河问题(二)java实现
    商人过河问题(一)
  • 原文地址:https://www.cnblogs.com/the-world/p/6785132.html
Copyright © 2020-2023  润新知