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。

上一篇:Luogu 1351 NOIP 2014 联合权值(贪心,计数原理)


下一篇:webdriver问题汇总