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周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. [C/C++] C++ Primer学习笔记

    记录下自己掌握不清楚的概念和用法... Day 1 endl:具有输出换行的效果,并刷新与设备相关联的缓冲区. 注:在调试程序过程中插入的输出语句都应刷新输出流,否则可能会造成程序崩溃,将会导致程序出 ...

  2. SSL证书部署

    SSL证书部署指南 https://www.trustauth.cn/ssl-guide

  3. variant conversion error for variable v23

    excel数据导入到oracle数据库出现的问题 V23指的是excel列.,这列的数据长度超出或者类型与数据库表不一致导致的 解决方法,1.清空该列,再建个新列 2.用access  SQL查出长度 ...

  4. 【刷题】BZOJ 2588 Spoj 10628. Count on a tree

    Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...

  5. 洛谷 P4009 汽车加油行驶问题 解题报告

    P4009 汽车加油行驶问题 题目描述 给定一个\(N×N\)的方形网格,设其左上角为起点◎,坐标(1,1) ,\(X\)轴向右为正,\(Y\)轴向下为正,每个方格边长为1 ,如图所示. 一辆汽车从起 ...

  6. MySQL事务及隔离级别(读书小结)

    标签: MySQL事务 隔离 0.什么是事务? 事务是指MySQL的一些操作看做是一个不可分割的执行单元.事务的特点是要么所有操作都执行成功,要么一个都不执行.也就是如果一个事务有操作执行失败,那么就 ...

  7. 洛谷大宁的邀请赛~元旦祭F: U17264 photo(线段树)

    标程的写法稍微有点麻烦,其实不需要平衡树也是可以做的. 线段树上维护从左端点开始最远的有拍照的长度,以及区间的最大值. 考虑两段区间合并的时候,显然左区间必须取,右区间的第一个比左区间最大值大的数开始 ...

  8. Python之旅:列表

    Python列表脚本操作符 列表对 + 和 * 的操作符与字符串相似.+ 号用于组合列表,* 号用于重复列表. 如下所示: Python 表达式 结果 描述 len([1, 2, 3]) 3 长度 [ ...

  9. Dubbo、Zookeeper集群搭建及Rose使用心得(一)

    接触这个两三月了,是时候总结一下使用的方法以及心得体会了.我是一个菜鸟,下面写的如有错误,还请各位前辈指出.废话不多说,正式开始. 一.简介 Dubbo是Alibaba开源的分布式服务框架,它最大的特 ...

  10. HDU 6071 同余最短路 spfa

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...