zoukankan      html  css  js  c++  java
  • 20175204 张湲祯 2018-2019-2《Java程序设计》第十周学习总结

    20175204 张湲祯 2018-2019-2《Java程序设计》第十周学习总结

    教材学习内容总结

    -第十二章:Java多线程机制要点:

    一、线程的概念

    1.线程(thread)就是进程中的一个执行线索,Java虚拟机允许进程中同时执行多个线程,每个线程都有一个优先级,具有较高优先级的线程先执行。
    2.线程是操作系统分配 CPU 时间的基本实体,每一个应用程序至少有一个线程,也可以拥有多个线程,线程是程序中的代码流,多个线程可以同时运行并能共享资源。
    3.线程与进程不同,每个进程都需要操作系统为其分配独立的地址空间,而同一进程中的各个线程是在同一块地址空间中工作。

    二、线程的控制与调度

    1.线程存在一个生命周期,由以下方法体现:
    (1) start()方法:启动一个线程。
    (2) run()方法:定义该线程的动作。
    (3) sleep()方法:使线程睡眠一段时间,单位为ms。
    (4) suspend()方法:使线程挂起。
    (5) resume()方法:恢复挂起的线程。
    (6) yield()方法:把线程移到队列的尾部。
    (7) stop()方法:结束线程生命周期并执行清理工作。
    (8) destroy()方法:结束线程生命周期但不做清理工作。
    2.线程有新建、运行、中断和死亡四种状态
    有4种原因的中断:
    (1)JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态
    (2)线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状态
    (3)线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态
    (4)线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞

    三、 线程间的同步

    在大多数实际运行多线程的应用程序中,俩个或多个线程需要共享地访问一 个对象,如果每个线程都调用一个方法,修改对象的状态,那么这俩个线程 互相影响对方的运行,从而使程序的运行结果不可预知或失去可再现性。因 此在实际的应用中,必须线程访问的资源加以限制,阻止其他线程的某一操 作直到本线程完成操作,这就称为同步。

    四、 线程间的通信

    当一个线程在工作时,它可能需要其他线程进行协调工作,为了协调俩个线 程,特别是在一个线程使用另一个线程输出时,可以使用wait()方法、noify ()和noifyAll()方法。

    五、线程的常用方法

    1.start()方法:只有新创建的线程才可以调用该方法。
    2.run()方法:该方法是否运行结束是判断线程是否结束的一个重要标准。只有当该方法运行结束后,线程才能再次调用start()方法。
    3.sleep(int millsecond)方法:线程可以调用该方法来使程序进入睡眠,知道过了参数指定的秒数过后才“醒来”。该方法必须在try-catch语句中调用,因为线程如果在休眠中被打断,会抛出InterruptedException异常。
    4.isAlive()方法:该方法用来判断线程是否正在运行,若是,返回true,若不是,返回false。注意,一个已经运行的线程在没有进入死亡状态时,不要再给线程分配实体。
    5.currentThread()方法是Thread类中的类方法,返回当前使用CPU的线程。
    6.interrupt()方法用来“唤醒”调用sleep方法而处于睡眠状态的线程。

    六、协调同步的线程

    当一个线程使用的同步方法中用到了某个变量,而此变量又需要其他线程修改后才能符合本线程的要求,则可以使用wait()方法来中断线程的执行,并允许其他线程使用这个同步方法(sleep方法是做不到这个功能的)。若有线程在运行同步方法时不需要等待,那么需要在用完方法的同时应用notifyAll()方法来通知其他所有处于等待的线程结束等待。只有在同步线程中才可以使用wait(),notify(),notifyAll()方法。

    七、守护线程

    线程默认是非守护线程,线程在运行之前必须设置自己是否为守护线程。可以调用voidsetDaemon(boolean on)来将自己设置成一个守护线程。当所有非守护线程运行结束时,守护线程一定会跟着结束。


    -代码托管(https://gitee.com/zyzgl/zyz)

  • 相关阅读:
    CISCO实验记录九:NAT地址转换
    CISCO实验记录八:ACL访问控制
    【零基础】风格迁移之deep-painterly-harmonization的安装和使用
    CISCO实验记录七:OSPF
    【零基础】看懂“深度学习”的优势
    数学专业各学科视频网址
    Flash网站Loading制作
    30张图 讲述真实的人性
    【UXPA工作坊小记】郎学明:做更“有用”的用户研究
    科学训练传播训练营///第一期:科学问题的复杂性///参后感觉
  • 原文地址:https://www.cnblogs.com/zyzgl/p/10813132.html
Copyright © 2011-2022 走看看