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

(图片参考JAVA多线程常见的十大问题)
新建:新建时就有了内存空间
运行调用start();方法通知JVM,排队等候切换线程。如果使用Thread的子类创建的,需要重写run();方法。
- 中断:
①JVM将CPU切换给其他线程
②线程在使用CPU资源的时候,使用了sleep(int millsecond)方法,使当前线程进入休眠状态。一旦执行sleep方法,则立即进入休眠状态,在等待指定的秒数后,重新进入线程队列中排队等待CPU资源
③线程在使用CPU资源的时候,使用了wait()方法,需要其他线程调用notify()方法,使它进入等待CPU资源的状态,以便从中断初继续进行。
④线程在使用CPU资源的时候,执行某个操作进入阻塞状态。 死亡:执行完了run()方法中全部语句。或被提前强制性终止。
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守护线程
教材学习中的问题和解决过程
- 问题1:关于多线程的问题,每次运行结果不一致,例如图


问题1原因:每次输出的结果不尽相同,是由于当前CPU 资源的使用情况。存在,抢占CPU资源的情况。
问题2


- 问题2原因:JVM的轮流执行线程的机制。暂无解决措施,等我研究完…
代码托管

上周考试错题总结

相关知识点:JDBC 驱动的四种类型 :①JDBC-ODBC Bridge Driver②Native API Driver③JDBC-Net Driver④Native Protocal Driver。
资料来源:百科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程序设计》第十周学习总结的更多相关文章
- 201521123027 <java程序设计>第十周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...
- Java程序设计第十周学习总结
Java课程知识梳理: 流的区分; 字符流与字节流的区别: 字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容 而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的 ...
- 20175234 2018-2019-2 《Java程序设计》第九周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码托管 感想 学习进度条 参考资料 20175234 2 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20172325 2018-2019-2 《Java程序设计》第九周学习总结
20172325 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 图的定义 图是由顶点集(VertexSet)和边集(EdgeSet)组成,针对图G,顶点集和 ...
随机推荐
- FICO-Payment Terms 收付款条件和分期付款设置
转载:https://www.cnblogs.com/weichuo/p/3524278.html Payment Terms 收付款条件和分期付款设置 SAP Payment Terms 中文翻译为 ...
- 多线程之NSOperation简介
在iOS开发中,为了提升用户体验,我们通常会将操作耗时的操作放在主线程之外的线程进行处理.对于正常的简单操作,我们更多的是选择代码更少的GCD,让我们专注于自己的业务逻辑开发.NSOperation在 ...
- 使用SAP Cloud Platform Leonardo机器学习提取图片的特征向量
选中一个需要进行测试的Leonardo机器学习服务,点击Configure Environments: 因为我不想使用sandbox环境,所以我选择了eu10这个region: 维护clientid和 ...
- 作为一名SAP从业人员,需要专门学习数学么
最近和SAP成都研究院的开发同事聊到过这个话题,Jerry来说说自己的看法. 先回忆回忆自己本科和研究生学过的数学课程.Jerry的大一生活是在电子科技大学的九里堤校区度过的,本科第一门数学课就是微积 ...
- PCI总线学习
PCI总线概述: 因为不实际操作了,所以就写一些方法论上的东西,纪念一下. PCI总线有三个非常显著的优点: 1. 在计算机和外设传输数据时具有更好的性能. 2. 能够尽量独立于具体的平台. 3. 可 ...
- 碰撞器Colider 触发器
碰撞器可以让所依附的游戏物件对其他碰撞体产生碰撞行为(其他游戏物体必须具有Rigidbody组件) 对于不规则形状的物体,通常使用组合式碰撞体而不是网格碰撞器,以为网格碰撞器以模型的网格为基础,更为复 ...
- 安装xshell、xftp
1.Xshell的软件的下载.安装 xshell是一个终端模拟软件,而且是远程近程都可以. 就是模拟服务器所在的linux,在xshell中可以输入命令, 就像在服务器的linux中输入命令一样.一般 ...
- C语言二级指针底层实现
C语言中,Pointers to Pointers,即二级指针. 一级指针和二级指针的值都是指向一个内存单元: 一级指针指向的内存单元存放的是源变量的值, 二级指针指向的内存单元存放的是一级指针的地址 ...
- JavaScript中对数组的排序
将下列对象数组,通过工资属性,由高到低排序 var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, ge ...
- 分享一个自制的USB转HART模块
HART协议是一种用于现场智能仪表和控制室设备之间的通讯协议.使用USB转HART模块可以很方便的对HART总线上的数据进行监控,并且可以远程控制.操作和校准HART设备.设计的模块主要采用的是USB ...