20175234 2018-2019-2 《Java程序设计》第十周学习总结
教材学习内容总结
12.1进程与线程
- 进程:程序的一次动态执行过程中,从代码加载、执行至执行完毕的一个完整过程。
- 线程:一个进程在执行中,可以产生多个执行线索,每条线索也有产生、存在和消亡的过程。
12.2 Java中的线程
- 多线程:一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况
- 线程的周期:线程使用Thread类及其子类对象来表示线程

(图片参考JAVA多线程常见的十大问题)
12.3 Thread类与线程的创建
- 使用Thread的子类, 需要重写父类的run()方法。
- 用Thread类直接创建线程对象。Thread(Runnable target)(该构造方法中的参数是一个Runnable类型的接口。)
- 目标对象与线程的关系
- 目标对象和线程完全解耦。目标对象没有组合线程对象.目标对象经常需要通过获得线程的名字(因为无法获得线程对象的引用)以便确定是哪个线程正在占用CPU资源,即被JVM正在执行的线程。
- 目标对象组合线程(弱耦合)。目标对象可以组合线程.目标对象类组合线程对象时, 目标对象可以通过获得线程对象的引用。
12.4 线程的常用方法
- start() ; 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。
- 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资源。
12.5 线程同步
当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。
在处理线程同步时,要修改数据的方法用关键字synchronized来修饰。
12.6 协调同步的线程
- wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。
- notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。
- notify()方法只是通知处于等待中的线程的某一个结束等待。
12.7 线程联合
一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:B.join(); 称A在运行期间联合了B。
12.8 GUI线程
12.9 计时器线程
12.10守护线程
教材学习中的问题和解决过程
问题描述:每次运行结果不同,且运行结果不理想


原因:java中的多线程是抢占式,谁抢到了cpu,cpu才会给他分配时间片,所以每次执行结果不一样

上周考试错题总结
资料来源:百科JDBC驱动程序

学习进度条
| 目标 |
5000行 |
30篇 |
400小时 |
|
| 第一周 |
51/51 |
1/1 |
12/20 |
Java的重要起步 |
| 第二周 |
460/511 |
2/3 |
30/32 |
Java的简单语句学习 |
| 第三周 |
803/1314 |
2/5 |
25/57 |
Java的基础学习 |
| 第四周 |
485/1699 |
1/6 |
20/77 |
Java的子类与继承 |
| 第五周 |
393/2092 |
1/7 |
20/97 |
Java的接口与实现 |
| 第六周 |
156/2321 |
2/9 |
18/115 |
内部类和异常类、输入输出流 |
| 第七周 |
1225/3546 |
2/11 |
20/135 |
常用类及方法 |
| 第八周 |
487/4032 |
2/13 |
20/155 |
泛型与集合框架 |
| 第九周 |
843/5105 |
2/15 |
12/167 |
JDBC与MySQL数据库 |
| 第十周 |
910/6015 |
3/18 |
10/177 |
Java多线程机制 |
参考资料
20175234 2018-2019-2 《Java程序设计》第十周学习总结
原文:https://www.cnblogs.com/ysz-123/p/10809413.html