20165235 祁瑛 2018-4 《Java程序设计》第八周学习总结
教材学习内容总结
操作系统与进程
-
程序是一段静态的代码,它是应用软件执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载,执行至执行完毕的一个完整过程,这个过程也是进程本身从产生,发展至消亡的过程。
进程与线程
-
线程间可以共享进程中的某些内存单元。
java的多线机制
-
java虚拟机快速的把控制从一个线程切换到另一个线程,这些线程将被轮流执行,使得每个线程都有机会使用CPU资源。
主线程
-
main
线程主要负责执行main
方法。在main
方法的执行中在创建的线程,就被称作程序中的其他线程。 -
JVM
就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CPU
资源。线程的状态和生命周期
-
java
语言使用Thread
类及其子类的对象来表示线程。
-start()
方法通知JVM,JVM就会知道有一个新的线程排队了。 -
sleep(int millsecond)
方法使当前线程进入休眠状态。
-run ()
方法规定了该线程的具体使命。Thread类
- 创建线程的一个途径是用
Thread
类直接创建线程对象。通常使用其构造方法。 -
使用
Runnable
接口比使用Thread
的子类更加的灵活。目标对象与线程对象的关系
- 目标对象与线程对象完全解耦
-
目标对象组合线程
线程同步
-
若干线程都使用一个
synchronized
修饰的方法。多个线程调用synchronized
修饰的方法必须遵守同步机制。线程联合
一个线程A在占用CPU的资源期间,可以让其他线程调用
join()
方法和本线程联合。
教材学习中的问题和解决过程
问题一:在运行Example12_3的时候,每次运行的结果都不一致?
解决:这个问题还没有解决,但我个人认为是用
Thread
类创建的猫,狗两个线程在使用CPU资源时是随机轮流交替,谁先得到资源是不确定的,所以会出现结果不一致的情况。
码云代码链接
- 本周代码
- Example12_1
- Example12_2
- Example12_3
- Example12_4
- Example12_5
- Example12_6
- Example12_7
- Example12_8
- Example12_9
-
脚本运行截图:
上周考试错题总结
- 属于数据操作语言的是:insert和update
- Statement的executeUpdate()方法会返回int值
- 异常情况正确的是: java.sql.SQLException:结果集已耗尽 (结果集用尽或未调用next);java.sql.SQLException: No suitable driver(URL拼写错误)
- 以下哪些是定义在ResultSet中用于Cursor定位的方法:
next()
beforeFirst()
afterLast()
isBeforeFirst()
-
relative(int)
感悟
通过本周的学习,对线程有了一些了解,在给线程分配CPU资源时我们可以理解为不同状态之间的转换。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 31/31 | 1/1 | 20/20 | git的使用 |
第二周 | 373/404 | 2/3 | 18/38 | java基本数据语法 |
第三周 | 547/920 | 1/4 | 22/60 | 类与对象以及打包 |
第四周 | 919/1839 | 2/6 | 30/80 | 子类与继承,接口和面向接口编程 |
第五周 | 500/2300 | 3/9 | 20/ 100 | 输入输出流以及内部类 |
第六周 | 300/2600 | 1/10 | 25/125 | 泛型与集合框架,常用实用类 |
第七周 | 447/3047 | 3/13 | 25/150 | MySQL数据库与JDBC |
第八周 | 700/3826 | 3/16 | 25/175 | java的多线程机制 |