201521123114 《Java程序设计》第10周学习总结
1. 本章学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容。
1. 创建线程方式:
定义Thread的子类
定义实现Runnable接口的类,实现run()
2. 调用start()来启动线程,不能用run()启动线程。
3. 守护线程:
终止线程——boolean标志
线程暂停——Threads.sleep()
线程让步——Threads.yield()
等待其他线程结束——join()
4. 线程的几种状态:
New(新建)
Runnable(就绪):可运行状态
Running(运行):正在运行
Dead(死亡)
阻塞(Blocked):sleep,join,IO阻塞等
2. 书面作业
Q1. finally
题目4-2
1.1 截图你的提交结果(出现学号)
1.2 4-2中finally中捕获异常需要注意什么?
只有执行过try语句块,finally语句块才会执行;且无论在try块的哪个地方返回,finally块都会被执行到。
Q2. 用异常改进ArrayIntegerStack
题目4-3
2.1 截图你的提交结果(出现学号)
2.2 实验总结
当栈满的时候压栈、栈空的时候弹栈或者取栈顶抛出相应异常。
直接用if语句判断栈满或栈空(栈满:top>=capacity;栈空:top=0;)然后根据题目要求throw出FullStackException或EmptyStackException
Q3. 自定义异常
题目5-4
3.1 截图你的提交结果(出现学号)
3.2 自定义异常有哪几个关键点?
自定义异常类,必须从已有的异常类继承,而且最好是选择意思相近的异常类进行继承。
如果是Checked Exception继承Exception,如果是Uncheck Exception继承RuntimeException。
Q4. 读取文件并组装对象
实验任务书中中的题目3:读取文件并组装对象
给出关键代码(需出现你的学号)
try{
i++;
String a1 = lineScanner.next();//姓名
str.append(a1);
String a2 = lineScanner.next();//身份证号
str.append(a2);
String a3 = lineScanner.next();//性别
str.append(a3);
String a4 = lineScanner.next();//年龄
str.append(a4);
String a5 = lineScanner.next();//地址
str.append(a5);
while(lineScanner.hasNext()){//谨防地址只有一段
a5 += lineScanner.next();
}
userList.add(new User(a1,a2,a3,Integer.valueOf(a4),a5));
}catch(Exception e){
e.printStackTrace();
System.out.println("导入第" + i + "行时,发生以上错误!");
System.out.println("该行内容为:" + str);
}
finally{
str = new StringBuffer();
}
Q5.学会使用Eclipse进行调试
观看相关调试视频
5.1 简述使用Eclipse进行调试需要几步?
1. 在正确的地方设置断点
2. 开启调试模式
3. 运行程序
4. 查看状态值
5. 执行完毕或遇到问题
5.2 调试时F5, F6, F7快键键各有什么不同?什么情况该使用哪个快捷键?
F5(step into)进入某个函数
F6(step over)跳过。 当要跳过某个语句的时候使用
F7(step return)跳出某个函数。某个函数有很多语句的时候,如果想中途跳出这个函数,使用F7。
5.3 除了Eclipse的调试器,你还使用什么方法调试程序?
一般使用System.out.println()输出值来调试。
Q6. 题集多线程
6.1 程序填空3-1、3-2。(截图提交结果,出现你的学号)
6.2 函数4-1(Thread)、4-2(Runnable)(截图提交结果,出现你的学号)
6.3 函数4-3(Runnable与匿名内部类)(截图提交结果,出现你的学号),并使用Labmda表达式改写。
Thread t1 = new Thread(
() -> {
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(Thread.class.getInterfaces()));
}
);
6.4 实验总结
3-1:设置t1为守护线程。
3-2:主线程在调用t1线程的join()方法,则被挂起,直到目标线程t1结束才恢复。
4-1:按要求重写一下run()方法
4-2:当一个word比较完了之后要将其设置为null,否则会一直比较。
4.3:重写Runnable()的run()方法。
Q7. 源代码阅读:多线程程序BounceThread
7.1 哪个类是支持多线程的类,它实现了什么接口。这个类做了些什么?
BallRunnable,实现了Runnable接口。这个类就是调用小球移动的函数,移动之后,对界面进行重画
7.2 Ball.java这个程序只做了两件事,这两件事分别是什么?
实现小球的移动,获取小球的坐标和大小。
7.3 BallComponent也只做了两件事,这两件事分别是什么?
添加小球,并画出来。
7.4 BounceThread中,什么时候启动了新线程?
点击addButton按钮的时候会添加一个小球,启动一个新线程。
7.5 这个程序是如何实现?一个大致的执行流程是什么?
建立一个图像界面,加入显示小球运动的组件,点击添加按钮就会有小球出现在界面中并开始移动,每点击一次,就会多出来一个移动的小球。
最后当小球移动一定的步数之后,再停止。
Q8. 购物车系统中的多线程
8.1 购物车系统中可能存在哪些多线程问题?
有多个Frame就有多个线程。
一个顾客相当于一个线程,在出现多个顾客抢购一个物品时,有时会因物品数量为0而导致其他顾客无法购买。
3. PTA实验总结及码云上代码提交记录
3.1本周Commit历史截图
201521123114 《Java程序设计》第10周学习总结的更多相关文章
- 2018面向对象程序设计(Java)第10周学习指导及要求
2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4) 学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...
- 面向对象程序设计(JAVA) 第10周学习指导及要求
2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4) 学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结
20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...
随机推荐
- ACL权限控制列表
1.查看文件系统是否支持ACL (xfs文件系统强制开启ACL,如果该分区已格式化为xfs,在使用dumpe2fs会看不到superblocks信息)zheng@ubuntu16:~$ sudo du ...
- 关于php中的include html文件的问题,为什么html可以在php中执行
之前在w3shXXl看的教程,上面对include的解释是把指定的文件复制到这条指令执行的地方. 这真是坑到我了..... 在了解mvc的时候,控制器显示视图时需要用include包含html视图文件 ...
- 用户管理-linux基础
用户管理 useradd -u -g -G(附加组) ,-c -d -s -r(创建系统用户) -M (不创建家目录) 思考:删除user1用户家目录,如何还原. 可以#cp ...
- Spring MVC控制层传递对象后在JSP页面中的取值方法
List<Order> orders = new ArrayList<Order>(); for (int i = 0; i < 3; i++) { Order t = ...
- Android-Error3:Error when loading the SDK
解决方法: 用C:\android\sdk\tools中的devices.xml将出现错误的地方的devices.xml替换掉既可以了.
- 基于dijkstra算法求地铁站最短路径以及打印出所有的路径
拓展dijkstra算法,实现利用vector存储多条路径: #include <iostream> #include <vector> #include <stack& ...
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...
- maven 随笔
<build> <plugins> <!--打包源代码--> <plugin> <artifactId>maven-source-plugi ...
- jvm系列 (四) ---强、软、弱、虚引用
java引用 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 jvm系列(三):锁的优化 我的博客目录 为什么将引用分为不同的强度 因为我们需要实现这样一种情 ...
- 学习js函数--函数定义
函数的定义方法有三种 1.函数表达式 2.函数声明 3,new function构造函数 这边主要看下函数表达式和函数声明 函数表达式(未省略标志的) var alertName = function ...