1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。
2. 书面作业
1.finally 题目4-2
1.1 截图你的提交结果(出现学号)
1.2 4-2中finally中捕获异常需要注意什么?
在finally中对于捕获异常需要单独处理,我们需要把resource.close()放在try语句中。并且在finally中的异常要在finally中捕获,不要在外层捕获。
2.用异常改进ArrayIntegerStack 题目4-3
2.1 截图你的提交结果(出现学号)
2.2 实验总结
这个题目已经做过好几次了,只需要在原来的方法上做修改,在push()方法,pop()方法,peek()方法中需要先抛出(throws)他们自己会出现的异常。然后在遇到会出现异常的条件时抛出异常(throw new 异常)。
3.自定义异常 题目5-4
4.1 截图你的提交结果(出现学号)
4.2 自定义异常有哪几个关键点?
1.需要在该异常中告诉别人发生异常的原因。 2.说明该异常类型,check or uncheck。 3.尽量使用jdk已经有的类,便于理解 4.需要继承已有异常,如Exception,Threads。
4.读取文件并组装对象
实验任务书中中的题目3:读取文件并组装对象
给出关键代码(需出现你的学号)
5.学会使用Eclipse进行调试 观看相关调试视频
5.1 简述使用Eclipse进行调试需要几步?
1.根据错误提示信息,确定错误类型; 2.缩小错误发生范围,确定错误发生点; 3.设置断点; 4.启动调试 5.查看状态值
5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?
`1.F5(step into):跳进某个函数内;
2.F6(step over):跳过某个函数,不进入;
3.F7(step return):跳出某个函数;
- 当需要调试函数内部代码,需要使用F5快捷键进入函数内部;
- 需要一步一步调试就使用F6快捷键;
- 需要跳出函数就使用F7快捷键。`
5.3 除了Eclipse的调试器,你还使用什么方法调试程序?
还可以使用Sysout.out.println();语句进行调试,可以更加清楚变量的值以及运行的过程。
6.题集多线程
6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)
6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)
6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。
6.4 实验总结
3.1: 要求主线程退出时,在main方法中所启动的线程也要自动结束,需要设置t1为守护线程。 3-2:调用join()方法,直到目标线程t1结束才恢复; 4-1:此题考察Thread类的创建,重写run()方法,循环输出0到n-1; 4-2:需要通过捕获异常来使进程结束,使用sleep方法抛出异常,使线程结束。
7.源代码阅读:多线程程序BounceThread
7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?
BallRunnable是支持多线程的类,他实现了Runnable接口。这个类就是调用小球移动的函数,移动小球的位置,然后再画出来,实现了小球的移动效果。
7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?
1.getShape()实现了构造大小为15x15的小球,同时从位置(0,0)开始出发; 2.move()获得小球位置。
7.3 BallComponent也只做了两件事,这两件事分别是什么?
添加一个小球,将小球画出来。
7.4 BounceThread中,什么时候启动了新线程?
在运行界面点击相应的开始按钮按钮,程序调用addBall()方法完成添加小球的操作,之后启动了新线程。
7.5 这个程序是如何实现?一个大致的执行流程是什么?
1.建立一个图形界面 2.每点击一次按钮就出现一个小球 3.小球移动 4.移动到一定位置停止
8.购物车系统中的多线程
8.1 购物车系统中可能存在哪些多线程问题?
1.多个用户同时购买同一件商品的时候会产生多线程的问题,需要解决先后顺序的购买。 2.如果多个用户对数量有限的商品进行购买,有可能会出现货物不足的问题,这时就是先到先得.
3. 码云上代码提交记录
题目集:异常、多线程(3-1, 3-2, 4-1, 4-2, 4-3)
3.1. 码云代码提交记录