线程通信
线程的通信就是一个数据可以让两个线程轮流打印 你打印一下 我打印一下
线程的通信需要用到 wait() notify() 和 notifyAll()方法来使线程进行通信
通信方法:
wait() : 一旦执行此方法 当前线程就进入阻塞状态,并释放同步监视器(锁) notify(): 一旦执行此方法,就会被唤醒的wait线程,如果有多个线程被wait就会唤醒优先级高的 notifuAll(): 一旦执行此方法释放所有被wait()方法阻塞的线程
说明:
说明: 1: wait() notify() notifyAll() 必须使用在同步代码块或者同步范方法中 2: 这三个方法必须都是同一个同步监视器调用
面试题:
面试题: sleep() 和wait()异同
相同:一旦执行都会使线程进入阻塞状态 不同点: 1: 两个方法的声明位置不同 Thread中声明sleep() Object中声明wait() 2: 调用的范围: sleep随时可以用, wait()必须使用在同步代码或者同步方法中 3: 是否释放同步监视器: 如果两个方法都是用在同步代码块和同步方法中 sleep()不会释放锁,wait()会释放锁
.