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历史-设置时间段”, 然后搜索并截图



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

  1. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

  2. 面向对象程序设计(JAVA) 第10周学习指导及要求

    2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4)   学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  10. 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结

    20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...

随机推荐

  1. CentOS Linux 新建oracle数据库实例并连接

    CentOS Linux 新建oracle数据库实例 安装好oracle之后,首先想到的那就是自己建一个库来看看效果喽. 创建的过程如下文章所说,http://blog.chinaunix.net/u ...

  2. Kaggle竞赛 —— 泰坦尼克号(Titanic)

    完整代码见kaggle kernel 或 NbViewer 比赛页面:https://www.kaggle.com/c/titanic Titanic大概是kaggle上最受欢迎的项目了,有7000多 ...

  3. ArrayList 和Vector ,HashTable和HashMap异同

    相同点: 1.都实现了List接口(List接口继承自Collection接口) 2.有序集合,数据可重复,可按索引号取值(而HashSet无序,不可重复) 不同点: 1.Vector是线程安全的,而 ...

  4. Maven注意事项

    Maven好处: 1.依赖管理:对jar包统一管理 2.项目构建:项目编码完成后,对项目进行编译.测试.打包.部署,实现项目一键发布1.配置环境变量    注意:maven工具必须有jdk环境.并且: ...

  5. include包含头文件的语句中,双引号和尖括号的区别

    include包含头文件的语句中,双引号和尖括号的区别   #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非 ...

  6. DVWA笔记之二:Command Injection

    命令注入 1.Low级别 <?php  if( isset( $_POST[ 'Submit' ]  ) ) {      // Get input      $target = $_REQUE ...

  7. 【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  8. 记录git常用操作命令

    GIT的常用操作 0.写在前面 作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能.git 相较 SVN 而言,其优点不言而喻.git 的功能非常强大,其包括的操作命令也非常的多,但是 ...

  9. 运维开发工程师 面试题 shell编程

    1. 32位随机密码生成 cat /proc/sys/kernel/random/uuid | tr -d '-' 2.查看当前系统每个ip的tcp连接数 -n 强制显示IP地址 -t 显示TCP连接 ...

  10. 7.21.04 for循环

    for循环的三个语句可以放置任何表达式,但是有个不成文的规则,for循环的3个部分应当对同一个计数器变量进行初始化,检测和更新.若不遵循这一规则,编写的循环常常晦涩难懂! 如果在循环第一部分声明了一个 ...