zoukankan      html  css  js  c++  java
  • [Java复习]java线程

    1.创建java线程

    通过直接实例化Thread对象或实例化继承Thread对象来创建线程。

    2.java线程的结束

    方法一:线程到达run()方法的末尾

    方法二:线程抛出一个未捕获到的Exception或者error

    方法三:调用stop()

    3.休眠

    sleep():当前线程进入等待状态,直到过了指定时间或者另一线程对当前线程Thread调用了Thread.interrupt

    调用了Thread.interrupt的休眠线程会抛出InterruptedException,此时线程知道他由于中断,不会查看计数器是否过期。

    Thread.yield()并不引起休眠,暂停当前线程片段,让其他线程运行。当高优先级的调用Thread.yield()时,较低优先级线程就不会运行。

    4.守护程序线程

    即系统线程:如垃圾收集线程和jvm创建的其他线程。

    当所有的非守护程序线程完成之后java程序退出。

    任何线程都可以变成守护程序线程。用Thread.setDaemon()指明某个线程是守护程序线程。

    5.线程有关的方法关键字汇总

    start():启动线程,自动调用run()方法

    run():线程真正运行的代码,必须是public切返回为void

    Synchronized:保护共享数据。当一个线程访问时,被修饰的数据将被上锁,阻止其他线程访问。保持数据一致性的方法

      以下三个方法协调共享数据,必须在Synchronized语句块内使用。且不属于Thread类属于Object

      wait():使当前线程暂停并释放锁对象标志,让其他线程可以进入Synchronized块,当前线程被放入等待池中

      notify():由jvm任意唤醒一个等待池中的线程,并给上锁

        notifyAll():唤醒所有等待线程,给对象锁。

    sleep():让当前线程暂停一段时间,使其他线程先执行(低、同、高优先级),但是不释放锁,有Synchronized块的,其它线程扔不能访问共享数据。注意该方法要捕获异常

    join():调用join的线程完成run()方法里面的内容后,再执行join()。注意该方法需要捕获异常。

    yield():让线程暂停,但是不能指定暂停的时间,只能让同优先级的线程执行

  • 相关阅读:
    C++ vector介绍
    C++string的使用
    关于VS2010error RC2170 : bitmap file res mp1.bmp is not in 3.00 format
    团队项目第一次讨论
    团队项目——铁大树洞个人分析
    第五周学习进度总结
    转发
    android移动端疫情展示
    《构建之法》阅读笔记03
    第四周学习进度总结
  • 原文地址:https://www.cnblogs.com/doublesong/p/3336253.html
Copyright © 2011-2022 走看看