第十周-异常与多线程
1. 本周学习总结
1.1 以你喜欢的方式(思惟导图或其余)概括总结异常与多线程相关内容。



2. 书面做业:本次PTA做业题集异常、多线程
1. finally:题目4-2
1.1 截图你的提交结果(出现学号)

1.2 4-2中finally中捕获异常须要注意什么?
finally的执行以前必须先通过try语句。而在finally中也须要使用到try-catch,以防出现异常,因此会比较臃肿。
2. 用异常改进ArrayIntegerStack:题目4-3
2.1 截图你的提交结果(出现学号)

2.2 实验总结
这个比较简单啦,主要是自定义异常了,而后throw就行了。
3. 自定义异常:题目5-4
4.1 截图你的提交结果(出现学号)

4.2 自定义异常有哪几个关键点?
首先是继承已有的异常类,而后调用父类的方法。其次是通常自定义异常都是为了能让人一看到就知道是出了什么错误,因此类名也颇有讲究。而后就是在使用的时候要利用throws和throw
5. 学会使用Eclipse进行调试:观看相关调试视频
5.1 简述使用Eclipse进行调试须要几步?
1. 在出错的地方设置断点
2. 启动调试模式
3. Eclipse有一个专门的debug perspective,专门用于调试
4. 查看状态值
5.2 调试时F5,F6,F7快键键各有什么不一样?什么状况该使用哪一个快捷键?
F5(step into):跳入,跳入某个函数内部进行调试
F6(step over):跳过,跳过某个函数,在执行时不进入某个函数
F7(step return):跳出,从某个函数内部跳出
5.3 除了Eclipse的调试器,你还使用什么方法调试程序?
使用System.out.println
6. 题集多线程
6.1 程序填空3-一、3-2。(截图提交结果,出现你的学号)

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

6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。
new Thread(new Runnable(){
public void run() {
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(getClass().getInterfaces()));
}
});
6.4 实验总结
这几个函数题其实作起来不难,就是理解题目有难度,包括异常的函数题也是这样子,题目看不懂,并且没有测试的数据,因此通不过也不知道少考虑了什么问题。就比如多线程的函数题4-2,我是没搞懂为啥部分正确。
3-1:这个是在线程中加一个flag,当flag的值改变了以后就退出
3-2:这个主要是join()方法的使用。
4-1:这个是经过定义Thread类的子类,覆盖Thread类的run()方法,而后建立该子类的实例,但通常不用该方法,开销大。
4-2:这个函数的关键是在于flag标识符,以此来终止线程。还有就是实现Runnable接口的一些概念吧。
4-3:匿名内部类与实现Runnable接口的综合性使用,既练习了如今学的知识,也不忘记以前学习的东西。
7. 源代码阅读:多线程程序BounceThread
7.1 哪一个类是支持多线程的类,它实现了什么接口。这个类作了些什么?
BallRunnable支持了多线程并实现了Runnable接口。这个类是用于Ball移动,第一个Ball移动以后,先睡眠一段时间,再从新开始第二个Ball移动,循环。
7.2 Ball.java这个程序只作了两件事,这两件事分别是什么?
这是Ball的类,是用于设计Ball的大小,形状,以及他的位置和移动路线。
7.3 BallComponent也只作了两件事,这两件事分别是什么?
将Ball设置成“图形”,并将其置于容器中。
7.4 BounceThread中,何时启动了新线程?
当点击按钮“start”时,调用addBall()方法,生成一个新的Ball,而后就启动了新线程开始移动。
7.5 这个程序是如何实现?一个大体的执行流程是什么?
首先将图形界面架构出来,将其中的基本组件设置好。其次在点击按钮“start”时,新生成必定设置下的Ball(每点击一次就会新生成一个Ball),而后启动新线程,根据设计开始他的移动路线,在移动必定的步数后停下来。
8. 购物车系统中的多线程
8.1 购物车系统中可能存在哪些多线程问题?
顾客吧,每一个顾客均可以同时操做购物车,搜索商品等。
3. 码云上代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 而后搜索并截图
很尴尬的是,不知道为何个人码云提交不了代码上去,因此没有截图了。