20165324 《Java程序设计》第八周学习总结
Posted 20165324hcj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165324 《Java程序设计》第八周学习总结相关的知识,希望对你有一定的参考价值。
学号 20165324 《Java程序设计》第八周学习总结
教材学习内容总结
第十二章 Java多线程机制
进程与线程
进程是程序的一次动态执行过程;线程是比进程更小的执行单位
线程的状态与生命周期
- Java语言使用Thread类及其子类的对象来表示线程,完整的生命周期要经历一下状态:
- 新建
- 运行:必须调用start()方法通知JVM才会运行
- 中断: 四种原因中断
- 死亡:原因有二,一为正常运行结束;二为线程被强制提前结束,即强制run()方法结束。
线程调度与优先级
- Java虚拟机中的线程调度器负责管理线程,优先级分为10个级别,分别用Thread类中的类常量表示。优先级可以通过
setPriority(int grade)
方法调整,getPriority
方法返回线程的优先级。 - JVM的线程调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。
Thread类与线程的创建
- 使用Thread的子类:编写Thread类的子类时,需要重写父类的
run()
方法,规范线程的具体操作。 - 使用Thread类:构造方法为
Thread(Runnable target)
,该构造方法中的参数为一个Runnable类型的接口。
使用Runnable接口比使用Thread类的子类更具有灵活性
- 如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
目标对象与线程的关系
- 目标对象与线程完全解耦
- 目标对象组合线程(弱耦合)
关于run方法启动的次数
线程的常用方法
start()
,调用方法启动线程,使其进入就绪队列排队run()
,用来定义线程对象被调度之后所执行的操作sleep(int millsecond)
,调用方法使其放弃CPU资源,休眠。必须在try-catch语句中调用sleep()方法。isAlive()
,线程处于新建状态时,线程调用isAlive()
方法返回false。currenThread()
方法为Thread的类方法,可以用类名调用,返回当前正在使用CPU资源的线程。interrupt()
,调用该方法可结束休眠,重新排队等待CPU资源。
线程同步
- 概念:程序中若干个线程都需要使用一个方法,而这个方法用synchronized(同步)给予了修饰。多个线程调用该方法必须遵守同步机制。
协调同步的线程
- 同步方法中使用wait()方法,中断线程的执行。
- 同步方法中使用notify()方法,通知所有由于使用这个同步方法而处于等待的线程结束等待。
wait(),notify(),notifyAll()都是Object类中的final方法
线程联合
- 一个线程A在占有CPU资源期间,可以让其他线程调用join()和本线程联合如:
B.join();
。
GUI线程
- 当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时,会自动启动更多的线程,其中有两个重要的线程:
AWT-EventQuecue
和AWT-Windows
,前一个负责GUI事件,后一个线程负责将窗体或组件绘制到桌面。
计时器线程
守护线程
- 一个线程可以调用
void setDaemon(boolean on)
方法,设置为一个守护线程。
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管
上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ...
参考资料
以上是关于20165324 《Java程序设计》第八周学习总结的主要内容,如果未能解决你的问题,请参考以下文章