20175322 《Java程序设计》第十周学习总结

20175322 《Java程序设计》第十周学习总结

教材学习内容总结

  • 进程与线程
    • 线程:一个进程在执行中,可以产生多个执行线索,每条线索也有产生、存在和消亡的过程
    • 进程:程序的一次动态执行过程中,从代码加载、执行至执行完毕的一个完整过程
  • Java中的线程
    • 多线程:一个应用程序中同时存在几个执行体,按几条不同的执行线索共同工作的情况
    • 线程的周期:线程使用Thread类及其子类对象来表示线程
    • 主线程:负责执行main方法
    • 完整的生命周期:新建、运行、中断、死亡
    • 新建:新建时就有了内存空间
    • 死亡:执行完了run()方法中全部语句。或被提前强制性终止
  • Thread类与线程的创建
    • Thread类直接创建线程对象。Thread(Runnable target)(该构造方法中的参数是一个Runnable类型的接口)
    • Thread类的子类不能再扩展其他的类
    • 编写Thread类的子类时,需要重写父类的run()方法
    • 目标对象与线程的关系
      • 目标对象和线程完全解耦。目标对象没有组合线程对象.目标对象经常需要通过获得线程的名字(因为无法获得线程对象的引用)以便确定是哪个线程正
        在占用CPU资源,即被JVM正在执行的线程
      • 目标对象组合线程(弱耦合)。目标对象可以组合线程.目标对象类组合线程对象时, 目标对象可以通过获得线程对象的引用
  • 线程的常用方法
    • 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异常,从而结束休
      眠,重新排队等待CPU资源
  • 线程同步
    • 线程同步机制:当一个线程使用synchronized方法时,其他线程想使用这个synchronized方法时就必须等待,直到前一个线程使用完该synchronized
    • 若干个线程都需要使用一个synchronized(同步)修饰的方法,即程序中的若干个线程都需要使用一个方法,而这个方法用synchronized给予了修饰,多个
      线程调用synchronized方法必须遵守同步机制
  • 协调同步的线程
    • wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法
    • notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先
      继续”的原则
    • notify()方法只是通知处于等待中的线程的某一个结束等待
  • 线程联合
    • 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,如:B.join(); 称A在运行期间联合了B
  • GUI线程
  • 计时器线程
  • 守护线程

代码托管

感悟

  • 本章内容较多,线程知识点有点难理解运用,之后还需要不断结合例子练习
  • 做实验发现对于上周的数据库知识掌握不够,运用生疏,需要翻书查找资料巩固

参考资料

原文地址:https://www.cnblogs.com/zyh5322/p/10812752.html