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()不会产生任何效果。
  • 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周学习总结的更多相关文章

  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. Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  2. path.join()和path.resolve()的区别

    现在写代码的时候有时候使用path.join(__dirname,'dist')有时候用path.resolve(__dirname,'dist'),都是能拼接处来一个绝对路径,但是具体有什么区别呢? ...

  3. 如何用纯 CSS 创作一个单元素抛盒子的 loader

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qKwXbx 可交互视频 ...

  4. DNSmasq安装配置

    dns安装配置yum -y install dnsmasq dns配置文件vi /etc/dnsmasq.confresolv-file=/etc/resolv.dnsmasq.confaddn-ho ...

  5. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation

    1.主要完成的任务是能够将英文转译为法文,使用了一个encoder-decoder模型,在encoder的RNN模型中是将序列转化为一个向量.在decoder中是将向量转化为输出序列,使用encode ...

  6. 20145331 《Java程序设计》第7周学习总结

    20145331 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda 1.Lambda定义:一个不用被绑定到一个标识符上,并且可能被调用的函数. 2.在只有Lam ...

  7. Ubuntu16.04安装搜狗拼音输入法(中文输入法)[转]

    本文转载自:https://www.cnblogs.com/darklights/p/7722861.html 虽然网上有很多教程,但是我觉得我的很适合那些真正的小白... 1.下载文件 由于我要给多 ...

  8. 入手sm961

    测速: 发现这个测速软件不同版本测试还不一样 下面是我的intel750的,用最新版本测试软件测的 淘宝买了一个散热片

  9. SpringCloud Feign报错:Method has too many Body parameters

    1.feign多参数问题 1.1GET方式 错误写法 @RequestMapping(value="/test", method=RequestMethod.GET) Model ...

  10. tomcat配置根目录访问后,部署后第一次访问会出现tomcat的默认界面而非项目首页

    tomcat配置根目录访问后,部署后第一次访问会出现tomcat的默认界面而非项目首页,而重启后会正常,这个原因是因为在配置文件中有如下配置,造成项目加载两次 <Host name=" ...