20165202 2017-2018-2 《Java程序设计》第8周学习总结
20165202 2017-2018-2 《Java程序设计》第8周学习总结
教材学习内容总结
Ch12
- 进程与线程
- 线程是比进程更小的单位,一个进程在其执行过程中,可以产生多个线程
- Java中的线程
主线程
每个Java应用程序都有一个缺省的主线程。当JVM加载代码,发现main方法之后,就会启动一个线程,这个线程称为“主线程”(main线程),该线程负责执行main方法。
线程的状态与生命周期
Java语言使用Thread类及其子类的对象表示线程
新建的线程在它的一个完整的生命周期中通常要经历如下的四种状态:
1.新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。
2.运行 :线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。一旦轮到它来享用CPU资源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。
3.中断:有4种原因的中断:
JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。
线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。
线程使用CPU资源期间,执行了wait()方法。
线程使用CPU资源期间,执行某个操作进入阻塞状态。
4.死亡 :处于死亡状态的线程不具有继续运行的能力,释放分配给线程对象的内存
- Thread类与线程的创建
- 在Java语言中,用Thread类或子类创建线程对象,编写子类时,需要重写run()方法。
使用Thread类:Thread(Runnable target)
Example12-3、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异常,从而结束休眠。
- 线程同步
- 若干个线程需要同时使用一个方法,需要使用synchronized进行修饰。 当一个线程使用synchronized方法时,其他线程若想使用就必须使用wait()方法等待,直到该线程使用完该方法
- 其他线程在使用同步方法时若不需要等待,则用完方法的同时,执行notifyAll()方法通知所有处于等待状态的线程结束等待。
- 协调同步的线程
- wait() 方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。
- notifyAll() 方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。
notify() 方法只是通知处于等待中的线程的某一个结束等待。
不可以在非同步方法中使用wait(),notify(),notifyAll()方法。
- 线程联合
- 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:
B.join();
称A在运行期间联合了B。 - 如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。
- 如果A准备联合的B线程已经结束,那么B.join()不会产生任何效果。
- 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:
- GUI线程
- 当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序会自动启动更多的线程
- AWT-EventQuecue线程负责处理GUI事件
- AWT-Windows线程负责将窗体或组件绘制到桌面
- 计时器线程
计时器线程
构造方法:
Timer(int a,object b)
,a的单位为毫秒,b是计时器的监视器只震铃一次:调用setReapeats(boolean b)方法,b取值false
启动计时器:
start()
停止计时器:
stop()
重启计时器:
restart()
- 守护线程
- 线程可以调用void setDaemon(boolean on)方法将自己设置成一个守护线程。
- 必须在运行之前设置自己是否守护线程。
代码调试中的问题和解决过程
问题1:上周的MySql一直没有装好
问题1解决方案:参考娄老师的博客XMAPP安装到这一步找不到相应入口
应该从 127.0.0.1
进入后选择红框内 phpMyAdmin
代码托管
上周考试错题总结
1.接口RowSet继承了接口__,可以调用RowSet中的方法__来填充其数据区。
①Statement ②ResultSet ③update ④populate
A . ①③
B . ①④
C . ②③
D . ②④
正确答案: C
解析:populate方法只能用来写入数据
2.下列属于数据操作语言的是
A . insert
B . update
C . create
D . select
正确答案: A B
我的答案:A B D
解析:本题我不太理解为什么没有D,按照百度百科关于数据操纵语言的定义,select也应该属于操作语言呀?
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 24/24 | 1/4 | 15/15 |
第二周 | 423/423 | 2/6 | 14/29 |
第三周 | 702/1109 | 1/7 | 16/45 |
第四周 | 918/2027 | 2/9 | 16/61 |
第五周 | 1208/3235 | 2/11 | 15/76 |
第六周 | 1137/4372 | 2/13 | 14/90 |
第七周 | 549/4921 | 1/14 | 10/100 |
第八周 | 1025/5946 | 3/17 | 15/115 |
20165202 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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- Appium移动自动化
一. 安装node.js 因为Appium是使用nodejs实现的,所以node是解释器,首先需要确认安装好 官网下载node.js:https://nodejs.org/en/download/ 安 ...
- ElasticSearch(四) ElasticSearch中文分词插件IK的简单测试
先来一个简单的测试 # curl -XPOST "http://192.168.9.155:9200/_analyze?analyzer=standard&pretty" ...
- 20145303刘俊谦 《Java程序设计》实验四 实验报告
实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络&q ...
- 20145310《Java程序设计》第5次实验报告
20145310<Java程序设计>第5次实验报告 实验要求 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验内容 根据所学内容,编写代码实现服务器与客户端 掌 ...
- 20145331 《Java程序设计》第3周学习总结
20145331 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 •对象(Object):存在的具体实体,具有明确的状态和行为 •类(Class):具有相同属性和行 ...
- Mac OS build caffe2 Error:This file was generated by an older version of protoc which is
问题所在 我们可以发现这个错误跟protobuf的版本有关,因此我们可以执行script/diagnose_protobuf.py 我们可以看到,pip install protobuf 和 brew ...
- spark SQL学习(综合案例-日志分析)
日志分析 scala> import org.apache.spark.sql.types._ scala> import org.apache.spark.sql.Row scala&g ...
- jquery 报错 $.cookie is not a function()
jquery 报错 $.cookie is not a function() ——我是之前可以运行的项目,突然报这个错误,很奇怪. 这是jquery的cookie插件报错. 插件名: jquery.c ...
- PAT1070. Mooncake (25)
#include #include #include <stdio.h> #include <math.h> using namespace std; struct SS{ d ...
- The SO_REUSEPORT socket option
One of the features merged in the 3.9 development cycle was TCP and UDP support for the SO_REUSEPORT ...