Thread使用Java的同学对Thread应该不陌生了,线程的创建和启动等这里就不讲了,这篇主要讲几个容易被忽视的方法,以及线程状态的迁移,最后会讲如何优雅的关闭线程。wait/notify/notifyAll首先我们要明白这三个方法是定义在Object类中,他们起到的作用就是允许线程就资源的锁定状态进行通信。这里所说的资源一般就是指的我们常说的共享对象了,也就是说针对共享对象的锁定状态可以通过wait/notify/notifyAll来进行通信。我们先看下如何使用的,并对相应原理进行展开。waitwait方法告诉调用线程放弃锁定并进入休眠状态,直到其他某个线程进入同一个监视器(monitor)并调用notify方法。wait方法在等待之前释放锁,并在wait方法返回之前重新获取锁。wait方法实际上和同步锁紧密集成,补充同步机制无法直接实现的功能。需要注意到wait方法在jdk源码中是final并且是native的本地方法,我们无法去覆盖此方法。调用wait一般的方式如下:synchronized(lockObject) { while(!condition) { lockObject.wait(); } //…;}join