zoukankan      html  css  js  c++  java
  • 20165203《Java程序设计》第八周学习总结

    20165203《Java程序设计》第八周学习总结

    教材学习内容总结

    第12章

    • 进程与线程
      • 进程的完成过程:代码加载、执行至执行完毕
      • 线程:一个进程由多个线程组成。
      • 线程的完成过程:自身的产生、存在和消亡
      • 关系:没有进程就不会有线程
      • 线程是运行在进程中的小线程。
    • 线程
      • 多线程:几个执行体共同执行程序的过程。
      • 注意:计算机在任何给定的时刻只能执行那些线程中的一个。
      • 建立多线程机制:Java虚拟机快速地把控制从一个线程切换到另一个线程,这些线程被轮流执行,每个线程都有机会使用CPU资源。
      • 主线程:JVM加载代码时,发现main方法之后启动的线程
      • 线程的状态:
        新建
        运行:使用start()方法
        中断
        死亡
    • 线程的创建
      两种方式:
    1. 使用Thread类子类创建:需要重写run()方法。
    2. 使用Thread
      构造方法:Thread(Runable target)
      需要创建一个Runnable接口类的事例,并在该接口中重写run方法。
    • 目标对象与线程的关系:完全解耦和目标对象组合线程
    • 线程中的常用方法:
    1. start():注意使用start()方法后不必再让线程调用start()方法。
    2. run():Thread子类中重写run()或在Runnable接口中编写run()
    3. sleep(int millsecond):使进程休眠。
      注意:参数millsecond是以毫秒为单位的休眠时间
      必须在try-catch语句块中调用sleep方法
      4.isAlive():线程没有进入死亡状态,调用isAlive()方法返回true
      线程进入死亡状态后,调用isAlive()方法返回false
      5.currentThread():返回正在使用CPU线程的线程。
      6.interrupt():解除线程的休眠状态。
    • 线程同步: 程序中的若干个线程都需要使用一个方法,而这个方法用synchronized给予了修饰。

    • 线程同步机制:线程A使用synchronized方法时,其他线程想使用这个synchronized方法必须等待,直到线程A使用完该synchronized方法。

    • 协调同步的线程:
      1.wait():在同步方法中使用,使本线程等待,暂时让出CPU的使用权。
      2.notifyAll():通知所有由于使用这个同步方法而处于等待的线程结束等待,曾中断的线程就会从刚才的中断处继续执行这个同步方法。
      3.notify():通知处于等待中的线程的某一个结束等待。
      ++必须在同步方法中使用这三种方法++

    • 线程联合
      join():其他线程调用该方法,可以和正在使用CPU资源的线程联合。

    • GUI线程

    • 计时器线程:使用Time类

    • 守护线程:使用void setDaemon(boolean on)方法

    教材学习中的问题和解决过程

    Q1:当学习教材时,前面的知识有所遗忘,不太了解JVM的具体含义?

    A1:经过查阅教材,并上网查找之后,得到了比较全面的答案。
    JVM其实是Java虚拟机的缩写,是Java程序实现其++平台无关性++的关键,正是因为的Java的平台无关性使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

    Q2:当学习到如图所示时,对程序中的currentThread()方法提出了疑问。
    A2:其实当我学习到后面,教材中对currentThread()方法做了解释,在这里我就说一下我自己打的理解,currentThread()方法是Thread类中的方法,用于返回当前正在使用CPU资源的线程,和getName()一起用。

    代码调试中的问题和解决过程

    Q1:在运行程序Example12_9.java时,运行结果如图所示,与教材实例中给出的结果不符。

    A1:自己仔细阅读教材,发现教材中给catMaker线程所赋名字有错误,如图所示。

    代码托管

    上周考试错题总结

    Q1:接口RowSet继承了接口__,可以调用RowSet中的方法__来填充其数据区。
    ①Statement ②ResultSet ③update ④populate
    A . ①③
    B . ①④
    C . ②③
    D . ②④

    A1:正解:C
    解析:与ResultSet相比较,
    (1)RowSet扩展了ResultSet接口,因此可以像使用ResultSet一样使用RowSet。

      (2)RowSet扩展了ResultSet接口,因此功能比ResultSet更多、更丰富。

      (3)默认情况下,所有 RowSet 对象都是可滚动的和可更新的。而ResultSet是只能向前滚动和只读的。

      (4)RowSet可以是非链接的,而ResultSet是连接的。因此利用CacheRowSet接口可以离线操作数据。

      (5)RowSet接口添加了对 JavaBeans 组件模型的 JDBC API 支持。rowset 可用作可视化Bean开发环境中的 JavaBeans 组件。

      (6)RowSet采用了新的连接数据库的方法。
      update常用于更新数据。

    其他(感悟、思考等,可选)

    本周的Java学习主要学习了线程,仿佛开启了新时代的大门,自我感觉线程非常有意思,自己正在尝 试用线程编写一些有意思的程序。另外,自己通过本周的学习也发现了前面的知识有些遗忘,要抓紧时间查漏补缺了。

    学习进度条

    ~ 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 48/48 1/1 20/20
    第二周 390/438 2/3 18/38
    第三周 886/1304 1/4 18/56
    第四周 1105/2409 1/5 30/86
    第五周 1229/3196 1/6 20/106
    第六周 1147/4343 2/8 25/131
    第七周 1862/3668 1/9 20/151
    第八周 955/5298 1/10 20/171
  • 相关阅读:
    (打包报错)AS打包报错:Generate Signed APK: Errors while building APK. You can find the errors in the 'Messages' view.
    NABCD
    石家庄地铁站项目最终总结报告
    团队冲刺2.7
    团队冲刺2.6
    团队冲刺2.5
    团队冲刺2.4
    团队冲刺2.3
    用户体验评价——win10自带微软拼音输入法
    团队冲刺2.2
  • 原文地址:https://www.cnblogs.com/20165203-xyx/p/8906348.html
Copyright © 2011-2022 走看看