注意:
1.notifyAll()中All的含义是所有的线程,而不是所有的锁,只能唤醒等待(调用wait()方法等待)同一个锁的所有线程,这一点一定要注意。
2.notifyAll()必须在当前线程拥有监视器锁的情况下执行,否则将抛出异常IllegalMonitorStateException。意思是说必须在同步代码块中,调用此方法,否则可能出现在没有得到锁的情况下,执行了此方法,导致程序异常。wait()和notify()系列方法这样设计的目的是防止死锁或永久等待发生。
3.notifyAll()方法任何对象都可以调用,并且无法重写此方法,因为被final修饰。
4.notifyAll()只能释放一把锁。单独列出此条,这很重要。
5.notifyAll()执行后,只有一个线程能得到锁,其他没有得到锁的线程会继续保持在等待状态。
二.讲解一个标准的notifyAll()方法使用代码
代码逻辑描述:
线程thread0和thread1共同竞争object对象锁,并调用各自的wait()方法等待。
线程thread2负责通过notifyAll()唤醒线程。
Microsoft 使用早期的Apple有啥特点?
Microsoft 使用早期的 Apple 雏形开发了Word 1.0,它于1984年发布在最初的 Mac 中。Multiplan 和 Chart 也在 512K Mac 下开发,最后它们于1985年合在一起作为Microsoft Excel1.0 发布:第一个在 Mac 上使用的轰动一时的零售程序。
因此,早期的 Microsoft Office 程序根源于Mac,当然,也反映在用户界面上。作为Mac的第一个和最大的软件提供者,在最初的Macintosh上做的一些 UI 决定受 Microsoft 开发团队的要求影响。当然,Office 图形化用户界面(特别是顶级菜单条)的最基本的轮廓有它在第一个Macintosh版本中的根源。
上一篇:数据传输过程中传输系统设计要怎样? 信息通信中运用CRC吗?
下一篇:最后一页