20165312 2017-2018-2《JAVA程序设计》第8周学习总结
20165312 2017-2018-2《JAVA程序设计》第8周学习总结
一、第十二章知识点总结
- 进程与线程
- 进程是程序的一次动态执行进程,它对应了从代码加载、执行至执行完毕的一个完整过程
- 线程不是进程,一个进程在其执行过程中,会产生多个线程,线程间可以共享进程中的代码和数据。
- 没有进程就没有线程
- 多线程
- 多线程是指一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况。
- 计算机只能执行多个线程中的一个,java虚拟机快速的把控制从一个线程切换至另一个线程。
- JVM一直要等到java应用程序中的所有线程都结束,才结束java应用程序
- 线程的状态与生命周期
- 新建:当一个Thread类或者其子类的对象被声明并创建时,线程对象处于新建状态,有了相应的内存空间和其他资源
- 运行:调用
start()方法进行排队,调用run()方法立刻执行 - 中断
- 死亡:一个正常运行的线程正常完成了他的全部工作或者被提前强制性终止、
- java中的线程调度器负责管理线程,线程的优先级通过
setPriority(int grade)方法调整。 - Thread类及其子类与线程的创建
- 编写Thread类的子类时,需要重写
run()方法 - Thread创建线程通常使用构造方法:
Thread(Runnable target)
- 编写Thread类的子类时,需要重写
- 目标对象与线程的关系
- 目标对象和线程完全解耦:目标对象通常需要获得线程的名字
String name = Thread.currentThread().getName(); - 目标对象组合线程(弱耦合):目标对象通常需要获得线程的引用
Thread.currentThread();
- 目标对象和线程完全解耦:目标对象通常需要获得线程的名字
- 线程的常用方法
start()run()sleep(int millsecond)参数millsecond是以毫秒为单位的休眠时间,如果线程在休眠时被打断,JVM就会抛出InterruptedException异常isAlive()返回true或者falsecurrentThread()Thread类中的类方法,可以用类名调用interrupt()吵醒休眠的线程
- 线程同步
- 线程同步:若干个线程都需要使用一个synchronized方法
- 线程同步机制:当一个线程A使用同步方法时,其他线程想使用这个同步方法时就必须等待
- 线程联合
B.join(); - 计时器线程
Timer(int a,Object b)创建一个计时器 - 守护线程:
thread.setDaemon(true)可以将自己设置成一个守护线程
二、错题总结
- 下列属于常用数据库的是( )
A . Access
B . XAMMP
C . MySQL
D . Oracle
E . SQL Server
答案:ACDE(XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。)
- 接口RowSet继承了接口__,可以调用RowSet中的方法__来填充其数据区。( )
①Statement ②ResultSet ③update ④populate
A . ①③
B . ①④
C . ②③
D . ②④
答案:C
- executeUpdate返回的类型是int,代表的含义是受影响的记录( )
A . true
B . false
答案:A
三、本周遇到的问题以及解决方法
- 在做本周测试的时候,设置好数据库和表之后,运行程序不对,反复检查代码没有问题,最后发现时没有先和数据库连接,犯了一个特别傻逼的错误,差一点过了测试的时间,时间很急就没有截图。。。
- 在看第十二章代码的时候,后面的GUI线程、计时器线程和应用举例用到了第九章的内容,有些看不懂。回头粗略的看下第九章的内容,感觉还是没有理解透彻,等我把第九章系统看完之后再把那几个代码重新看一遍吧,这样理解更深刻一点吧。。
- 不知道为啥吧,向码云上传代码的时候又一次出了问题。问题是“更新被拒绝,当前分支的最新提交落后于其对应的远程分支”,截图如下
!
解决方法:
(1)$ git fetch origin
!
(2)Ctrl+X
(3)$ git push origin master
参考:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
- 做本周的测试题目的时候对守护线程的理解不深,然后在网上找了找有关守护线程的资料。
(1)将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现
(2) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。
(3)在Daemon线程中产生的新线程也是Daemon的。
(4)守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。
代码托管
本周代码截图


20165312 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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- Hive介绍及安装
Hive介绍及安装 介绍: Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性. 简单来说 ...
- 在github上参与开源项目贡献代码
1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote ...
- c#关于捕获错误的问题
一般捕获错误,采用try,catch,但是有时捕获的错误不明朗,完全不知道是什么错误,这是可以取消try,catch调试运行,找到错误后并修正后,再把try,catch加上.
- CSS 选择器 选择 拥有多个类名 的元素
今天开发的时候,碰到这个连起来的类名. 才想起来,这个类似于 <div class="node hide"></div> 连起来写,表示找到 拥有这两个类 ...
- redis-sentinel主从复制高可用
Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端 ...
- SqlServer表中添加新字段
表中添加新字段ALTER TABLE 表名 ADD 字段名 VARCHAR(20) NULL 表中添加自增idalter table lianxi add id int primary key IDE ...
- Linux应用调试 :使用gdb和gdbserver进行远程调试
一.引言 在日常程序开发中不免遇到类似空指针操作导致程序崩溃的问题,所以需要一定的手段去定位bug,而断点调试是普遍使用的技巧,比如Windows中用VC++的debug模式进单步运行.断点调试等,而 ...
- Java面试(一) -- 基础部分(1)
1 .一个".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致.. ...
- webapp 安卓 ios 兼容性问题
1.ios js中时间不兼容YYYY-MM-DD这种格式的时间,只支持YYYY/MM/DD这种格式 // 在safari中new Date('2018-09-02') // Invalid Daten ...
- 20155208 徐子涵 Exp3 免杀原理与实践
20155208 徐子涵 Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 一种是基于特征码的检测,另一种是基于恶意行为的检测. (2)免杀是做什么? 在我看来,免杀就是要达 ...