20165209 2017-2018-2 《Java程序设计》第8周学习总结
教材学习内容总结
Java中的线程
- 操作系统可以同时管理多个进程,可以让多个进程共享系统所管理的资源。
- 线程可以共享进程过程中某些内存单元(包括代码与数据)。一个进程可以让其中的多线程轮流使用CPU。
- 在JVM加载代码时,发现main方法后就会启动“主线程”,负责执行main方法。
- 如果main方法中又创建了其他线程,那么JVM就要在主线程和其他县城之间轮流切换,保证每个县城都有机会使用CPU资源。
- JVM等到Java应用程序中所有线程都结束后,才结束Java程序。
- 使用Thread类及其子类的对象表示线程,包裹下面四种状态:
1.新建:创建Thread子类
2.运行:必须在子类中重建run()方法。
3.中断:当前线程切换给其他进程;执行了sleep(int millsecond)方法,使当前进程进入休眠状态;执行了wait()方法,使当前进程进入等待状态;执行了某个操作进入阻塞状态。
4.死亡:结束了run()方法。
Thread类与线程创建
- 使用Thread类:
1.给出线程对象的目标对象,实现Runnable接口。
2.创建线程对象,并指定其目标对象。
3.目标对象与线程关系 :完全解耦,弱耦合
4.run()方法
线程常用方法
- start():没有结束run()方法之前,再次调用start()方法会导致异常。
- run()
- sleep(int millsecond)
- isAlive()
- currentTheread():返回当前正在使用CPU资源。
- interrupt():吵醒正在sleep的线程。
- 注:正在使用的线程不要创建新的对象。
线程同步
- 若干个线程都需要使用一个synchronized(同步)方法。
- 同步机制:当一个线程使用synchronized(同步)方法时,其他方法只能等待该线程使用完方法后,再使用。(同步方法不能启动2次)
协调同步进程
- wait()方法可以中断线程执行,释放CPU使用权。
- 用notifyAll()方法通知所有由于使用同步方法而处于等待的线程结束等待,并遵循“先中断先继续”的原则。
- 注:不可在非同步方法中使用wait()、notify()方法和notifyAll()方法,且不可重写。
-wait()方法应当放在一个“while(等待条件){}”的循环语句,而不是“if(等待条件){}”的分支语句中。
线程联合
- 一个线程在占有CPU期间,可以让其他线程调用join()和本线程联合。
GUI 线程
-AWT-EventQuencue线程负责处理GUI事件,AWT-Windows负责窗体或组件绘制到桌面。
计时器线程
- Thread类创建的线程称作用户线程,Timer类创建的是专门计时的线程。
- start()方法启动计时器;stop()停止计时器,即挂起线程;restart()重新启动计时器,即恢复线程。
守护线程
- 线程默认是非守护线程,也称用户线程。当程序中的所有用户线程都结束运行时,即使守护线程还有需要执行的语句,守护线程也立刻结束执行
- 线程可以调用
void setDaemon(boolean on)
方法将自己设置成一个守护线程。 - 一个线程必须在运行之前设置自己是否守护线程。
教材学习中的问题和解决过程
- 问题1:什么是线程同步?
- 问题1解决方案:几个线程需要调用同一个同步方法(用synchronized修饰的方法)。
- 问题2:线程在什么状态时调用isAlive()方法返回值是false?
- 问题2解决方案:线程处于新建状态时,线程调用isAlive()方法返回值是false。
代码托管
上周考试错题总结
错题1:下列属于常用数据库的是 A C D E
A . Access
B . XAMMP
C . MySQL
D . Oracle
E . SQL Server错题2:接口RowSet继承了接口__,可以调用RowSet中的方法__来填充其数据区。 C
①Statement ②ResultSet ③update ④populate
A . ①③
B . ①④
C . ②③
D . ②④
其他(感悟、思考等,可选)
由于本章是Java中的难点,也有很多知识比较难以理解,所以花费了多一些的时间通过代码、视频教程和课本,对java的多线程了解了许多,课后还要多练习看书,巩固知识。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 37/37 | 1/1 | 20/20 | |
第二周 | 654/691 | 3/4 | 18/38 | |
第三周 | 477/1131 | 3/7 | 22/60 | |
第四周 | 657/1730 | 2/9 | 30/90 | |
第五周 | 1260/2515 | 1/10 | 30/120 | |
第六周 | 1022/3319 | 2/12 | 20/140 | |
第七周 | 1213/3803 | 1/13 | 20/160 | |
第八周 | 993/4796 | 4/17 | 30/190 |