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)方法,设置为一个守护线程。
教材学习中的问题和解决过程
代码调试中的问题和解决过程
代码托管


学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 203/203 | 4/4 | 15/15 | |
| 第二周 | 326/529 | 2/6 | 12/27 | |
| 第三周 | 1000/1500 | 2/8 | 20/47 | |
| 第四周 | 800/2300 | 3/11 | 20/67 | |
| 第五周 | 500/2800 | 2/13 | 18/85 | |
| 第六周 | 900/3700 | 2/15 | 15/100 | |
| 第七周 | 1100/4800 | 3/18 | 15/115 | |
| 第八周 | 1700/6500 | 1/19 | 18/133 |
参考资料
20165324 《Java程序设计》第八周学习总结的更多相关文章
- 201521123027 <java程序设计>第八周学习总结
1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...
- 20165324 《Java程序设计》第九周学习总结
学号 20165324 <Java程序设计>第九周学习总结 教材学习内容总结 第十三章 Java网络编程 URL类 使用URL创建对象的应用程序称为客户端 一个URL对象封装一个具体资源的 ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20175209 《Java程序设计》第九周学习总结
20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...
随机推荐
- Hadoop周边生态软件和简要工作原理(二)
转自: http://www.it165.net/admin/html/201307/1532.html Sqoop: sqoop在hadoop生态系统中也是应用率比较高的软件,主要是用来做ETL工具 ...
- Boosting with Abstention
论文提出了一种loss: x是原始数据,y是对应的label,h(x)是一个判别函数,r(x)相当于训练了一个信心函数,r(x)越大,代表对自己做的判断的信息越大,当r(x)<0的时候,就拒绝进 ...
- elasticsearch性能因素总结
一:硬件方面 在预算充足的情况下.特别是一些高并发业务的搜索.硬件层面占用整个elasticsearch性能空间很大比例. 1)内存: 单实例的情况下,尽量分配32G,排序和统计都是以及内存计算的 ...
- android 清除缓存功能
本应用数据清除管理器 DataCleanManager.java 是从网上摘的 忘了 名字了 对不住了 载入一个webview 产生缓存 众所周知的webview是产生缓存的主要原因之中的一 ...
- tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案
转:tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案 检查tomcat与web工程对应版本,tomcat中对应版本的jar包拷贝到web工程 ...
- Windows远程桌面没有密码的电脑
你如果想远程一个密码为空的机器,默认情况下是不可以的,需要进行以下设置 1.windows家庭版不支持远程桌面 2. 3.搜索“本地安全策略”
- shell脚本学习总结04--终端信息的获取和设置
tput tput 命令将通过 terminfo 数据库对您的终端会话进行初始化和操作.通过使用 tput,您可以更改几项终端功能,如移动或更改光标.更改文本属性,以及清除终端屏幕的特定区域. 文本属 ...
- hammer.js移动端手势库
hammer.js 是一个多点触摸手势库,能够为网页加入Tap.Double Tap.Swipe.Hold.Pinch.Drag等多点触摸事件,免去自己监听底层touchstart.touchmove ...
- codevs 5964 [SDOI2017]序列计数
[题解] 官方题解就两句话. 写了三个版本的不同分值代码.看代码吧. 前导1 //f[i][j][1/0]表示长为i,sum mod p=j,是否已经选了质数的方案数 #include<cst ...
- js 函数递归优化,arguments.callee 优化
函数递归是个经典的问题,平常用的时候,小练习可以通过函数名来反复调用,比如: function factorial(num) { if (num <= 1) { return 1; } else ...