• java线程中的sleep/wait/notify/yield/interrupt方法 整理


    java线程中的sleep/wait/notify/yield/interrupt方法

    sleep

    • 该方法能够使当前线程休眠一段时间
    • 休眠期间,不释放锁
    • 休眠时间结束之后,进入可执行状态,加入到线程就绪队列中,并不会立即执行
    • 调用的时候,必须捕获异常
    • 来自Thread的静态方法,只作用于当前线程
    • 单位毫秒

    wait

    • 该方法能干是当前线程休眠一段时间
    • 休眠期间,释放锁
    • 休眠时间结束之后,立即执行
    • 调用的时候无需捕获异常
    • 来自Object类的方法,一旦调用
    • 单位毫秒
    • 调用wait()方法进入休眠之后,通过notify()/notifyAll()方法唤醒

    join

    有点特别
    假如线程a中调用线程b的join()(这个时候b已经开始执行了),结果是线程a必须等b执行完,a才能继续执行

    个人感觉有点抽象,不符合某些设计原则,会把程序的代码结构搞得很乱。这样的方法用的很少

    yield

    与sleep类似,不能由用户指定休眠时间。只能让同优先级的线程有执行的机会。

    interrupt

    interrupt()中断线程。需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到wait()/sleep()/join()后,就会立刻抛出InterruptedException。

  • 相关阅读:
    nginx:安装成windows服务
    org.aspectj.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18
    数据库中间件
    架构策略
    谈判
    设计模式 总结 常用10种
    08 状态模式 state
    07 策略模式 strategy
    06 命令模式(不用)
    05 观察者模式 Observer
  • 原文地址:https://www.cnblogs.com/zhou-guobao/p/5496676.html
Copyright © 2020-2023  润新知