一、基础概念:
wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态,他们最终调用的都是jvm级的native方法,当我们调用时,如果在没有控制权(monitor)的线程里执行对象的以上三种方法,就会报java.lang.IllegalMonitorStateException异常,因此我们需要确保让线程拥有对象的控制权。线程取得控制权的方法有三:
执行对象的某个同步实例方法。
执行对象对应类的同步静态方法。
执行对该对象加同步锁的同步块。
我们多线程中常用第三种方法来实现,将以上notify和wait方法包在同步块中。
二、线程池简单实现注意点:
线程池组成成分:
1.工作线程,初始化的核心线程集合,用来执行任务。
2.任务队列,来还缓存待执行的runnable对象。