20165228 2017-2018-2 《Java程序设计》第8周学习总结
教材学习内容总结
- 进程与线程的关系
- 多线程的运行机制
- 线程的四种状态:新建、运行、中断、死亡
- 使用Thread类或子类建立线程对象的特色
- 掌握线程的经常使用方法:
- start():线程调用该方法将启动线程,使之重新建状态进入就绪队列排队
- run():Thread类的run()方法与Runnable接口中的run()方法的功能和做用相同,都用来定义线程对象被调度以后所执行的操做,都是系统自动调用而用户程序不得引用的方法
- sleep(int millsecond): 优先级高的线程能够在它的run()方法中调用sleep方法来使本身放弃CPU资源,休眠一段时间
- isAlive():判断线程是否还有实体, 线程处于“新建”状态时,线程调用isAlive()方法返回false。在线程的run()方法结束以前,即没有进入死亡状态以前,线程调用isAlive()方法返回true
- currentThread():该方法是Thread类中的类方法,能够用类名调用,该方法返回当前正在使用CPU资源的线程
- interrupt() :一个占有CPU资源的线程可让休眠的线程调用interrupt()方法“吵醒”本身,即致使休眠的线程发生InterruptedException异常,从而结束休眠,从新排队等待CPU资源
- 线程同步:若干个线程都须要使用一个synchronized修饰的方法。当两个或多个线程同时访问同一个变量,而且一个线程须要修改这个变量。咱们应对这样的问题做出处理,不然会发生混乱
- 协调同步的经常使用方法:
- wait()方法能够中断方法的执行,使本线程等待,暂时让出CPU的使用权,并容许其它线程使用这个同步方法
- notifyAll()方法通知全部的因为使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则
- notify()方法只是通知处于等待中的线程的某一个结束等待
- 线程联合:一个线程A在占有CPU资源期间,可让其它线程调用join()和本线程联合
- AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面
B.join()
若准备联合的B线程已经执行结束,则B.join()不会产生任何效果java
- 使用Timer类的方法start()启动计时器,即启动线程。使用Timer类的方法stop()中止计时器,即挂起线程,使用restart()从新启动计时器,即恢复线程
- 守护线程:一个线程调用void setDaemon(boolean on)方法能够将本身设置成一个守护(Daemon)线程
thread.setDaemon(true);
当程序中的全部用户线程都已结束运行时,即便守护线程的run方法中还有须要执行的语句,守护线程也马上结束运行git
教材学习中的问题和解决过程
(statistics.sh脚本的运行结果截图)并发
上周考试错题总结
- 错题1:
executeUpdate返回的类型是int,表明的含义是受影响的记录 A
A . true
B . false
- 要素全面
- 很认真细致
- 排版简介美观
代码中值得学习的或问题:
- 代码中文件分类简洁
- 很认真
其余(感悟、思考等,可选)
本周学习了多线程的知识,推翻了我以往对“多线程就是多个任务同时进行”的错误认识,而且学习到相关的操做线程的方法线程
学习进度条
目标 |
5000行 |
25篇 |
400小时 |
|
第一周 |
235/235 |
1/1 |
15/15 |
|
第二周 |
224/459 |
2/3 |
15/30 |
|
第三周 |
443/902 |
1/4 |
15/73 |
|
第四周 |
577/1479 |
2/6 |
17/90 |
|
第五周 |
1222/2360 |
1/7 |
14/104 |
|
第六周 |
1527/3294 |
1/8 |
14/118 |
|
第七周 |
591/3883 |
1/9 |
14/132 |
|
第八周 |
1705/5158 |
1/10 |
12/144 |
|