20165330 2017-2018-2 《Java程序设计》第8周学习总结
课本知识总结
第十二章 Java多线程机制
- Java中的线程
- 进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程
- 线程:一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每个线程都有它自身的产生、存在和消亡的过程
- 多线程:指一个应用程序中同时存在一个执行体
- 线程的状态及生命周期
- 新建:用Thread类及其子类的对象来表示线程
- 运行:run()
- 中断
- 死亡:释放分配给线程对象的内存
- 每个Java线程的优先级都在常数1和10之间,若没有明确设置优先级,每个线程的优先级都为常数5。
- Thread类与线程的创建
- 在Java语言中,用Thread类或子类创建线程对象
- 使用Thread类:Thread(Runnable target)
- 目标对象与线程的关系
- 目标对象与线程完全耦合
- 目标对象组合线程(弱耦合),即将线程作为自己的成员
- 线程的常用方法
- start():启动线程
- 只有处于新建状态的线程才可以调用start()方法
- 线程之后不必在调用start()方法,否则会导致IllegalThreadStateException异常
- run()
- 用来定义线程对象被调度之后所执行的操作
- 当run方法执行完毕,线程就变成死亡状态
- sleep(int millsecond)
- 用来是优先级高的线程休眠,使优先级低的线程做工作
- 必须在try-catch语句中调用sleep语句
- millsecond是以毫秒为单位的休眠时间
- isAlive()
- 线程处于新建状态时,调用isAlive()返回false
- 在run()结束之前,调用isAlive()返回true
- 在run()结束后,调用isAlive()返回false
- currentThread():返回正在使用的CPU资源的线程
- interrupt():结束一些线程的休眠,重新排队等待CPU资源
- 线程同步
- 若干个线程都需要使用一个synchronized(同步)修饰的方法
- 同步机制:当一个线程A使用synchronized方法时,其他线程想使用这个synchronized方法时就必须等待,直到线程A使用完该synchronized方法
- 协调同步的线程
- 使用wait()方法,中断线程的执行,使本线程等待,暂时让出CPU的使用权
- 使用notifyAll()方法通知所有由于使用一个同步方法而处于等待的线程结束等待
- 线程联合
- 一个线程A在占有CPU资源期间,可以让其他线程调用join()和本线程联合
B.join()
- 在联合后,A线程立刻中断执行,一直等到B线程执行完毕,再重新排队等待CPU资源
- 在B线程结束后,B.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()
遇到的问题及解决方法
- 在课上测试数据库时,输入中文最后输出来是乱码。
解决办法:这里自己在课前没有做好充分准备,没有仔细看书上步骤,在新建数据库时,要选择中文相应的字符编码gb2312(GB2312 Simplified Chinese)
- 在运行本章第7个代码时,发现没有输出
解决办法:在检查代码后,发现自己粗心未在调用方法中输入变量名
- 在运行第5个代码时,程序一直跳时间,无法跳出,怎样使一个线程终止运行?
解决办法:参考Java中如何正确而优雅的终止运行中的线程,源程序中只调用了start()方法,程序不断地分配新实体,参看第6个代码,可调用interrupt()结束一些程序的休眠,中断正在运行的线程。
代码托管
上周错题总结
解析:答案ACDE
解析:答案C
解析:executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)
20165330 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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- The difference between Severity and Priority
The difference between Severity and Priority[1] 2015-06-24 There are two key things in defects of th ...
- dp之多重背包poj2392
题意:有k种石头,高为hi,在不超过ai的高度下,这种石头可以放置,有ci种这个石头,求这些石头所能放置的最高高度......... 思路:以往的什么硬币种数,最大硬币数之类的,他们的硬币都已经是排好 ...
- 基于jQuery的时间轴鼠标悬停动画插件
之前为大家分享了很多jquery插件,这次我们要来分享一款不太常见的jQuery插件,它是一个时间轴,时间轴上的每一个点在鼠标滑过时都可以显示该点的描述信息,并且鼠标滑过时都可以产生一定的动画特效,比 ...
- ASP.NET 5 将于2016年一季度公布
简单介绍:微软ASP.NET团队在GitHub宣布ASP.NET 5的公布时间表和发展蓝图. 该团队宣布在2015年还将公布三个Beta版.一个ASP.NET 5的抢先版(RC 1).到2016年一季 ...
- PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究
PHP 转义 实现 把输出渲染成网页或API响应时,一定要转义输出,这也是一种防护措施,能避免渲染恶意代码,造成XSS攻击,还能防止应用的用户无意中执行恶意代码. 我们可以使用前面提到的 htmlen ...
- eclipse不能自动编译生成class文件的解决办法
最近在项目项目开发过程中遇到eclipse不能自动编译生成class文件,当时很纳闷,每次修改代码后运行都是修改前的效果,没辙了,只好反编译原来的class文件,结果发现,class文件里并没有看到修 ...
- WINDOWS中设置计划任务执行PHP文件
1.写一个PHP程序,命名为test.php,内容如下所示: <? $fp = fopen("test.txt", "a+"); fwrite($fp, ...
- C++ 函数的扩展④--函数重载与函数指针
//函数扩展--函数重载与函数指针 #include<iostream> using namespace std; //函数参数类型不同 void Fuc(char * b){ print ...
- Oracle触发器修改数据时同步执行插入该条数据
原创:lixx ---从UNWIREDATA 表中查询数据,如果该表中地磁状态发生改变(CARDSTATE)执行插入到MAINTABLE 表中---根据唯一值ERID判断,如果ERID值存在,修改该条 ...
- Tagger: Deep Unsupervised Perceptual Grouping
没看论文,但看了介绍视频,简直做了一个小型纪录片. 视频地址:https://www.youtube.com/watch?v=jfB_lWZA4Qo 中文翻译:http://blog.csdn.net ...