线程通信
不同的线程执行不同的任务,如果这些任务之间有某种联系,线程之间必须能够通信,协调完成工作。
java.lang,Object类中提供了两种用于线程通信的方法:
- wait():执行该方法的线程释放对象的锁,虚拟机把该线程放到对象的等待池中,等待其他线程将它唤醒。
- notice():执行该方法的线程唤醒在对象等待池中等待的一个线程。如果对象的等待池中不止一个线程在等待,虚拟机会随机选择一个线程唤醒,把它转化到对象的锁池中。
- noticeAll():该方法会把对象等待池中所有线程都转到对象的锁池中等待。
中断阻塞
当线程A处于阻塞状态时,如果线程B调用线程A的interrupt()方法,那么线程A就会接受到一个InterruptedException异常,线程A退出阻塞状态,开始处理异常。