第十周-异常与多线程
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-1、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历史-设置时间段”, 然后搜索并截图
很尴尬的是,不知道为什么我的码云提交不了代码上去,所以没有截图了。