20165230 2017-2018-2 《Java程序设计》第8周学习总结
20165230 2017-2018-2 《Java程序设计》第8周学习总结
教材学习内容总结
第十二章 java多线程机制
- 一个进程在其执行过程中,可产生多个线程。线程是比进程更小的执行单位
- JVM保证每个线程都有机会使用CPU资源,等到Java应用程序中的所有线程都结束后才结束应用程序
线程状态与生命周期
- 使用
Thread类及其子类的对象表示线程 - 调用
start()方法将线程加入JVM管理队列。调用以后不能再让线程调用start()方法 run()方法规定了线程的具体使命。方法执行完毕后线程变成死亡状态。
-sleep(int millsecond)使线程进入休眠状态。优先级高的线程可让出CPU资源是优先级低的线程执行wait()方法使线程进入等待状态。通过notify()方法使线程从中断处继续运行。通常将wait()方法放入“while”的循环语句中
常用方法
isAlive()用于判断线程是否处于新建状态或进入死亡状态,若是,返回false.- 一个已经运行的线程在没有进入死亡状态时,不要再给线程分配实体
currentThread()返回当前正在使用CPU资源的线程interrupt()用来“吵醒”调用sleep()方法休眠的线程Thread类与线程创建
- 编写子类时,需要重写
run()方法 创建线程的构造方法:
Thread(Runnable target),参数是Runnable类型的接口,需向接口传递实例对象线程同步
- 线程同步机制:当一个线程使用
synchronized方法时,其他线程若想使用就必须使用wait()方法等待,直到该线程使用完该方法 - 其他线程在使用同步方法时若不需要等待,则用完方法的同时,执行
notifyAll()方法通知所有处于等待状态的线程结束等待 不可以在非同步方法中使用wait()、notify()、notifyAll()方法
线程联合
B线程可通过
B.join()联合A线程。A线程将立刻中断执行,等到B执行完毕后恢复执行GUI线程
- AWT-EventQuecue线程负责处理GUI事件
AWT-Windows线程负责将窗体或组件绘制到桌面
计时器线程
Timer(int a,Object b)创建计时器start()启动计时器stop()停止计时器restart重启计时器守护线程
- 调用
void setDaemon(boolean on)方法设置守护线程 一个线程必须在运行之前设置自己是否是守护线程
教材学习中的问题和解决过程
- 问题1:实现java多线程的两种方法有什么区别?
问题1解决:通过博客了解到
采用继承Thread类方式:
- (1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
- (2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
- 采用实现Runnable接口方式:
- (1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
- (2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
- 问题2:p377的代码TicketHouse中为什么把
wait()改为Thread.sleep(3000),李逵永远无法买票? 问题2解决:通过比较wait()方法和Thread()方法,了解到:
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。
代码调试中的问题和解决过程
- 问题1:在调试example12_3时,为什么得到的结果是狗喝水剩7,猫喝水剩8?
- 问题1解决:通过学习教材视频得知每个电脑的运行的结果不尽相同,输出结果以来当前CPU资源的使用情况而定
上周考试错题总结
错题1

- select也是数据操作语言
错题2

书上原话:“直接关闭MySQL数据库服务器所占用的命令行窗口不能关闭MySQL数据库服务器,可以使用任务管理器来关闭”
代码托管
https://gitee.com/BESTI-IS-JAVA-2018/20165230/commit/5dd42538867b45b2b037b6d2039c2cf622fd26d9
代码截图

学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 13/13 | 1/30 | 19/19 | |
| 第二周 | 426/426 | 3/30 | 12/12 | |
| 第三周 | 562/562 | 4/30 | 15/15 | |
| 第四周 | 1552/1958 | 5/30 | 16/16 | |
| 第五周 | 1123/3086 | 6/30 | 14/14 | |
| 第六周 | 747/3833 | 8/30 | 12/12 | |
| 第七周 | 953/4786 | 11/30 | 13/3 | |
| 第八周 | 4564/5881 | 13/30 | 14/14 |
参考资料
20165230 2017-2018-2 《Java程序设计》第8周学习总结的更多相关文章
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- 数据库性能优化之SQL语句优化(下)
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最 ...
- linux下安装jenkins
我们不用离线安装方式 第一步.必须验证java环境 第二步.我们这里使用yum命令进行在线安装,使用service命令进行启动 1.wget -O /etc/yum.repos.d/jenkins.r ...
- BZOJ2806_Cheat
Ctsc2012的题目.做完感觉自己瞬间变高富帅了. 不过回想其实也觉得不难,想到用单调队列就很简单了,还有二分= =.呵 对于给出的一篇文章,如果你们将它分成若干段,并在所有长度不小于L的片段在字典 ...
- BZOJ2339 HNOI2011卡农(动态规划+组合数学)
考虑有序选择各子集,最后除以m!即可.设f[i]为选i个子集的合法方案数. 对f[i]考虑容斥,先只满足所有元素出现次数为偶数.确定前i-1个子集后第i个子集是确定的,那么方案数为A(2n-1,i-1 ...
- EF 使用 oracle
EF 使用 oracle https://www.oracle.com/technetwork/topics/dotnet/downloads/index.html C:\Program Files ...
- BZOJ2878 [Noi2012]迷失游乐园 【基环树 + 树形dp + 期望dp】
题目链接 BZOJ2878 题解 除了实现起来比较长,思维难度还是挺小的 观察数据范围发现环长不超过\(20\),而我们去掉环上任何一个点就可以形成森林 于是乎我们枚举断掉的点,然后只需求出剩余每个点 ...
- redis协议
Redis的通讯协议可以说大集汇了……消息头标识,消息行还有就行里可能还有个数据块大小描述.首先Redis是以行来划分,每行以\r\n行结束.每一行都有一个消息头,消息头共分为5种分别如下: (+) ...
- CAS使用心得
1.理解CAS实现SSO需要哪些组成部分 2.理解CAS实现SSO流程,包括登陆.注销.二次登陆.其他应用登陆 3.CAS部署需要SSL支持,理解容器如何开启SSL.服务端证书.jre证书信任.创建以 ...
- C++ 文本查询2.0(逻辑查询)
代码实例实现了继承和友元之间的关系,以及为了隐藏实际继承实现,而实现的接口类,代码偏乱,楼主- -自看的(提醒作用) TextQuery.h // // Created by 徐爱东 on 17/7/ ...
- 题解【51nod 1290 Counting Diff Pairs】
Description 求区间内有多少对 \((i,j)\) 满足 \(|a_i - a_j| \leq k\) Solution 可以莫队做(万能的莫队) 只需要考虑加入一个数会产生多少贡献即可 离 ...