• 201521123084 《Java程序设计》第10周学习总结


    1. 本周学习总结

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

    1)线程:指进程中的一个执行流程;

    2)一个进程可以同时运行多个不同线程,不同线程执行不同的任务;

    3)创建线程的方式:

    • 定义Thread类的子类,覆盖Thread类的run()方法,然后创建该子类的实例(一般不用该方法,开销大);
    • 定义实现Runnable接口的类,实现它的run()方法,然后将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例(常用);

    4)线程常用方法:

    • run():线程运行时所执行的代码,无须用户手动执行;
    • start():启动线程;
    • sleep(longmillis):让当前正在执行的线程休眠一段时间,此时线程不消耗CPU资源;
    • join(…):等待线程结束;

    5)守护线程:使用setDaemon(trueor false)设置,Thread类还提供一个isDaemon方法,判断是否为守护线程,如果所有前台线程死亡,守护线程自动结束。

    6)线程状态

    • New(新建)
    • Runnable(就绪)
    • Running(运行,获取CPU)
    • 阻塞
      • 其他阻塞:sleep、join、IO阻塞(等待键盘输入)
      • 等待:执行wait
      • 同步:synchronized,尝试获得对象锁
    • Dead(死亡)

    2. 书面作业

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

    1. finally

    题目4-2
    1.1 截图你的提交结果(出现学号)

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

    (1)try语句块执行过后,才会执行finally语句块;
    (2)try中有就算return语句,无论在try语句块中的哪个地方,finally语句块都会执行;
    

    2. 用异常改进ArrayIntegerStack

    题目4-3
    2.1 截图你的提交结果(出现学号)

    2.2 实验总结
    answer:

    这道题不需要用到try-catch,只要对本题的三个方法进行改进,满足抛出异常的条件然后抛出异常即可,这样让使用者更清晰的看到哪里出错,为什么出错。
    

    3. 自定义异常

    题目5-4
    4.1 截图你的提交结果(出现学号)

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

    1)所有异常都必须是Exception,Throwable的子类或其子类的子类;
    2)判断是否需要try-catch异常类,需要则继承Exception类,不需要则继承RuntimeException;
    3)考虑是否需要自定义异常,编写过程中尽量使用JDK已有的异常类,便于理解。
    4)抛出异常时需要显示异常类以及抛出异常的具体原因,同时让使用者知道异常发生的原因。
    

    4. 读取文件并组装对象

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

    运行结果:

    5. 学会使用Eclipse进行调试

    观看相关调试视频
    

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

    1)根据错误提示信息,确定错误类型;
    2)缩小错误发生范围,确定错误发生点;
    3)设置断点;
    4)启动调试:“Debug”
    5)查看状态值。

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

    1)F5(step into):跳进某个函数内;
    2)F6(step over):跳过某个函数,不进入;
    3)F7(step return):跳出某个函数;
    - 当需要调试函数内部代码,需要使用F5快捷键进入函数内部;
    - 需要一步一步调试就使用F6快捷键;
    - 需要跳出函数就使用F7快捷键。
    

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

    还可以使用System.out.println()输出语句进行调试。
    

    6. 题集多线程

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

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

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

    Labmda表达式:

    6.4 实验总结
    answer:

    3-1:将t1设置为后台线程,使其在主线程终止时也会自动结束;
    3-2:调用join()方法,直到目标线程t1结束才恢复;
    4-1:编写MyThread类,并按题目要求重写run方法;
    4-2:(1)word比较完了需置为null;
        (2)需要通过捕获异常来使进程结束,使用sleep方法抛出异常,使线程结束。
    4-3:按题目要求输出。
    

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

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

    BallRunnable,实现了Runnable接口,生成小球的位置显示,并使用repaint()方法,从而使小球形成移动的效果。
    

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

    (1)getShape()实现了构造大小为15x15的小球,同时从位置(0,0)开始出发;
    (2)move()获得小球位置。
    

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

    (1)add(Ball b)加小球;
    (2)paintComponent(Graphics g)画小球。
    

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

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

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

    建立一个Jframe,使用组件,使小球显示,之后通过改变小球的位置,使用repaint()画面,达到move效果,点击start可以添加新线程,每点击一次就增加一个小球,最终全部移动到终点位置。
    

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

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

    有多少个顾客,就有多少个线程。
    

    3. 码云上代码提交记录

    题目集:异常、多线程(3-1, 3-2, 4-1, 4-2, 4-3)

    3.1. 码云代码提交记录

    • 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图


  • 相关阅读:
    java jmap,jstat等工具的使用
    jvm 参数配置
    python NameError: name 'false' is not defined
    aiflow Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
    TX 笔试题总结
    POJ 3140 Contestants Division
    POJ 1018 Communication System
    POJ 3260 The Fewest Coin
    Leetcode: Median of two sorted Array
    基础知识 (二)
  • 原文地址:https://www.cnblogs.com/fantasticlzs/p/6785624.html
Copyright © 2020-2023  润新知