0%

并发之等待和通知

[TOC]

线程之间通讯

  1. 轮询方式,浪费cpu计算资源
  2. 通知等待机制,通过wait/notify/notifyAll实现。

notify 和 notifyAll 区别比较
使用wait/notify/notifyAll实现线程间通信的几点重要说明

notify可能会引起死锁,因此一般提倡使用notifyAll。

Thread.sleep()方法

sleep(A)方法: 告诉 cpu,在接下来的指定时间A内,我不需要使用cpu。经过指定时间A后,我才会参与cpu的使用竞争中。

因此,sleep()方法被调用后,接下来的代码被执行的时刻 一般会大于 A。

Thread.sleep(0)

Thread.sleep(0) 表示主动放弃当前的时间片,手动触发一次操作系统分配时间片。

sleep方法和wait方法有什么区别

最大的不同点:wait释放锁,sleep不释放锁。wait用于线程交互,sleep用于暂停执行。

其他不同:

  • wait是object方法。sleep是Thread的静态方法。
  • wait在synchronized中被调用。sleep任何地方都可以。
  • sleep需要捕捉异常。wait不需要。

参考

理解 Thread.Sleep 函数